<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.ejudge.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Podlesnykh</id>
	<title>EjudgeWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.ejudge.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Podlesnykh"/>
	<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php/Special:Contributions/Podlesnykh"/>
	<updated>2026-04-21T02:37:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://www.ejudge.ru/wiki/index.php?title=Serve.cfg:problem:source_header&amp;diff=5711</id>
		<title>Serve.cfg:problem:source header</title>
		<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php?title=Serve.cfg:problem:source_header&amp;diff=5711"/>
		<updated>2015-10-27T16:12:21Z</updated>

		<summary type="html">&lt;p&gt;Podlesnykh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Конфигурационные файлы]]/[[serve.cfg]]/[[serve.cfg:problem|Конфигурационные параметры задач]]/[[serve.cfg:problem:source_header|source_header]]&lt;br /&gt;
&lt;br /&gt;
'''Редактирование элемента:''' страница ''&amp;quot;Editing contest&amp;quot;'', вкладка ''&amp;quot;Problems (serve.cfg)&amp;quot;'', блок ''&amp;quot;Abstract problems&amp;quot;'', поле ''&amp;quot;Source header file&amp;quot;'', либо страница ''&amp;quot;Editing contest&amp;quot;'', вкладка ''&amp;quot;Problems (serve.cfg)&amp;quot;'', блок ''&amp;quot;Concrete problems&amp;quot;'', поле ''&amp;quot;Source header file&amp;quot;''.&lt;br /&gt;
&lt;br /&gt;
Данная переменная вместе с переменной &amp;lt;tt&amp;gt;[[serve.cfg:problem:source_footer|source_footer]]&amp;lt;/tt&amp;gt; позволяет задавать имя файла с текстом, который будет&lt;br /&gt;
использоваться в начале и конце сданных решений при компиляции&lt;br /&gt;
программы. Например, условие задачи может требовать написания одной&lt;br /&gt;
функции или класса, а не целой программы. В этом случае при компиляции&lt;br /&gt;
в начало текста программы можно добавить, например, директивы&lt;br /&gt;
подключения необходимых библиотек, а в конец программы - главную&lt;br /&gt;
функцию программы, которая считывает входные данные из файла,&lt;br /&gt;
запускает пользовательскую функцию и записывает результат в выходной&lt;br /&gt;
файл. Таким образом на турнирах могут использоваться задачи в стиле&lt;br /&gt;
&amp;lt;tt&amp;gt;TopCoder&amp;lt;/tt&amp;gt;. Значения переменных наследуются от абстрактной задачи, при&lt;br /&gt;
этом выполняются форматные подстановки. Особенность данных переменных&lt;br /&gt;
в том, что форматные подстановки выполняются непосредственно перед&lt;br /&gt;
компиляцией программы и, таким образом, могут использовать форматные&lt;br /&gt;
преобразования языка программирование. С помощью форматных&lt;br /&gt;
преобразования языка программирования можно использовать различные&lt;br /&gt;
файлы для разных языков программирования.&lt;br /&gt;
&lt;br /&gt;
source_header и source_footer обычно лежит там же, где и условия задач (в каталоге statements).&lt;br /&gt;
Рекомендуется в конце source_header и начале source_footer ставить лишний перевод строки, чтобы текст, посланный участником, не склеивался и не вызывал ошибку компиляции. Valgrind и компиляторы сообщают о номере строки, в которой произошла ошибка. Из-за source_header'а номера строк изменяются. Чтобы участники могли понять, в чём ошибка, рекомендуется либо указывать длину source_header'а в условии, либо, если позволяет язык, явным образом делать номера строк сдвинутыми на некую большую круглую константу.&lt;br /&gt;
&lt;br /&gt;
Пример source_header'а.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int cmp_int(const void * p1, const void * p2);&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
        int x,y,z;&lt;br /&gt;
        scanf(&amp;quot;%d&amp;quot;,&amp;amp;x);&lt;br /&gt;
        scanf(&amp;quot;%d&amp;quot;,&amp;amp;y);&lt;br /&gt;
        z=cmp_int(&amp;amp;x,&amp;amp;y);&lt;br /&gt;
        if(((x-y&amp;lt;0)&amp;amp;&amp;amp;(z&amp;lt;0))||((x-y&amp;gt;0)&amp;amp;&amp;amp;(z&amp;gt;0))||((x==y)&amp;amp;&amp;amp;(z==0))) &lt;br /&gt;
                {printf(&amp;quot;%d\n&amp;quot;,x-y); return 0;}&lt;br /&gt;
        printf(&amp;quot;%d\n&amp;quot;,z);&lt;br /&gt;
        return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#line 1000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной задаче участник должен реализовать функцию cmp_int. Логика проверки (фактически, чекер) встроена в source_header. Аргументы, передаваемые функции, берутся из тестов и часть их может быть видна участнику, а в случае ошибки вывод функции участника виден как вывод программы. Чекер может использоваться стандартный (cmp_int).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В описании задачи в конфигурационном файле serve.cfg можно указать, что в разных вариантах header'ы будут разными.&lt;br /&gt;
Например:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[problem]&lt;br /&gt;
id = 87&lt;br /&gt;
super = &amp;quot;Generic&amp;quot;&lt;br /&gt;
short_name = &amp;quot;elong_07&amp;quot;&lt;br /&gt;
long_name = &amp;quot;is equal&amp;quot;&lt;br /&gt;
max_open_file_count = 32&lt;br /&gt;
max_process_count = 64&lt;br /&gt;
full_score = 80&lt;br /&gt;
test_score = 1&lt;br /&gt;
score_bonus = &amp;quot;16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1&amp;quot;&lt;br /&gt;
open_tests = &amp;quot;1:full&amp;quot;&lt;br /&gt;
standard_checker = &amp;quot;cmp_file&amp;quot;&lt;br /&gt;
enable_language = &amp;quot;gcc-vg&amp;quot;&lt;br /&gt;
enable_language = &amp;quot;g++-vg&amp;quot;&lt;br /&gt;
variant_num = 2&lt;br /&gt;
source_header = &amp;quot;elong_07_begin-%Vv.c&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
В данном примере в зависимости от варианта перед кодом участника будет либо elong_07_begin-1.c, либо elong_07_begin-2.c. Если делаете эти файлы символическими ссылками, они не должны вести на один и тот же файл.&lt;/div&gt;</summary>
		<author><name>Podlesnykh</name></author>
		
	</entry>
</feed>