Рекомендации по работе в системе администрирования турниров ejudge
Система ejudge предназначена для проведения турниров и олимпиад по программированию. Её основное назначение – предоставление пользователям удобного интерфейса проведения соревнований с возможностью проверки сдаваемых решений в режиме реального времени. Помимо этого, система может быть использована при проведении учебных занятий. Более подробно об этой системе можно узнать по адресу ejudge.ru/wiki/index.php/.
Примеры решения задачи “Максимум из трех”
Максимум из трех
Для трех заданных чисел из интервала от -100 до 100 вывести максимальное из них.
Input format
В файле max.in содержатся три числа в одной строке через пробел
Output format
В файл max.out вывести одно число - искомый максимум.
Examples
- Пример решения задачи “Максимум из трех” на языке С++ ::
#include <fstream>
using namespace std;
int a, b, c;
int main(){ ifstream cin("max.in"); ofstream cout("max.out");
cin >> a >> b >> c;
cout << max(max(a,b),c);
}
- Пример решения задачи “Максимум из трех” на языке Pascal.
var a,b,c: integer;
function max(a,b: integer): integer;
begin
if a > b
then
max:=a
else
max:=b;
end;
begin
assign(input, 'input.txt');
assign(output, 'output.txt');
reset(input);
rewrite(output);
readln(a, b, c);
writeln(max(max(a, b), c));
close(output);
end.
- Пример решения задачи “Максимум из трех” на языке Basic :
dim a as integer
dim b as integer
dim c as integer
dim m as integer
open "max.in" for input as #1
open "max.out" for output as #2
input #1, a, b, c
if a > b then m = a else m = b
if c > m then m = c
print #2, trim(str(m))
- Для того чтобы сдать программу на проверку, нужно в окне задачи из выпадающего списка выбрать язык, на котором написано решение, указать файл с исходным кодом программы и кликнуть “Send”.
- Обращаем ваше внимание, число попыток сдачи одним участником по одной задаче ограничено одиннадцатью попытками.
- Возможны следующие основные ответы системы:
- “Ошибка компиляции” – отправленная программа имеет синтаксические ошибки, в этом случае в разделе “Посмотреть протокол” можно прочитать отчет об этих ошибках и, исправив их, снова послать решение на проверку. При этом “Ошибка компиляции” не считается полноценной попыткой сдачи и не учитывается в числе попыток.
- “OK” или “Неполное решение” – отправленная программа успешно скомпилирована и принята на проверку. Такая попытка уменьшает общее число попыток по данной задаче на одну.
Типичные ошибки участников
Обращаем ваше внимание на следующие типичные ошибки, совершаемые начинающими при работе с автоматическими системами проверки:
- недостаточное внимание к формализму системы
- некоторые участники не понимают, что система, как правило, просто сравнивает посимвольно правильный ответ на задачу с ответом, сгенерированным проверяемой программой; если в условии сказано, что числа должны быть разделены строкой, то это так и должно быть; если в условии сказано, что должно быть выведено
“Yes” с большой буквы, то
“yes” будет признано неправильным ответом, и т.д.
- лишние запросы перед считыванием
- многие неопытные участники перед считыванием входных данных, пишут фрагмент кода, подобный следующему:
writeln('Введите два числа');
readln(a,b);
writeln(a+b);
Так как система просто сравнивает то, что проверяемая программа подает на выход, то на выходе она обнаруживает набор символов, начинающийся с
“Введите два числа” и засчитывает эту строку как неправильный ответ. Никаких приглашающих к вводу операторов в программе быть не должно. Программа должна начинать свою работу непосредственно со считывания данных в том порядке и формате, в каком это указано в условии.
- излишние проверки границ
- для правильного выбора типов данных в условии грамотно оформленной задачи обязаны быть ограничения на все входные параметры (количество вводимых чисел, их тип (натуральные, целые, вещественные с определенной точностью), диапазон из которого их можно брать, длины строк и т.п.). Условие задачи гарантирует, что все входные данные в тестах будут соответствовать этим ограничениям и проверять подходят ли входные данные под эти ограничения в самой программе - нет необходимости. Эта проверка не скажется на результате выполнения программы, но ее написание может отнять лишнее время. С другой стороны следует понимать, что в пределах оговоренных ограничений жюри вправе генерировать тесты любой сложности. И если в условии сказано, что на вход подается не более 100000 целых чисел по модулю не превосходящих 10^9, то, скорее всего, среди тестов встретится и такой, где будут сто тысяч чисел, каждое из которых близко к миллиарду.
- при работе с языком Basic
- следует учитывать, что по умолчанию выводится пробел перед числом. Проверяющей системой это может быть в некоторых случаях принято за ошибку. Поэтому рекомендуется при выводе числовых данных использовать команду
print trim(str(a))
, где a – выводимое число.