Рекомендации по работе в системе администрирования турниров ejudge

Система ejudge предназначена для проведения турниров и олимпиад по программированию. Её основное назначение – предоставление пользователям удобного интерфейса проведения соревнований с возможностью проверки сдаваемых решений в режиме реального времени. Помимо этого, система может быть использована при проведении учебных занятий. Более подробно об этой системе можно узнать по адресу ejudge.ru/wiki/index.php/.

Примеры решения задачи “Максимум из трех”

Максимум из трех

Для трех заданных чисел из интервала от -100 до 100 вывести максимальное из них.

Input format

В файле max.in содержатся три числа в одной строке через пробел

Output format

В файл max.out вывести одно число - искомый максимум.

Examples

Input Output
2 3 2 3
  1. Пример решения задачи “Максимум из трех” на языке С++ ::
    #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);
    }
  2. Пример решения задачи “Максимум из трех” на языке 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.
  3. Пример решения задачи “Максимум из трех” на языке 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))
  4. Для того чтобы сдать программу на проверку, нужно в окне задачи из выпадающего списка выбрать язык, на котором написано решение, указать файл с исходным кодом программы и кликнуть “Send”.
  5. Обращаем ваше внимание, число попыток сдачи одним участником по одной задаче ограничено одиннадцатью попытками.
  6. Возможны следующие основные ответы системы:
    • “Ошибка компиляции” – отправленная программа имеет синтаксические ошибки, в этом случае в разделе “Посмотреть протокол” можно прочитать отчет об этих ошибках и, исправив их, снова послать решение на проверку. При этом “Ошибка компиляции” не считается полноценной попыткой сдачи и не учитывается в числе попыток.
    • “OK” или “Неполное решение” – отправленная программа успешно скомпилирована и принята на проверку. Такая попытка уменьшает общее число попыток по данной задаче на одну.

Типичные ошибки участников

Обращаем ваше внимание на следующие типичные ошибки, совершаемые начинающими при работе с автоматическими системами проверки:

недостаточное внимание к формализму системы
некоторые участники не понимают, что система, как правило, просто сравнивает посимвольно правильный ответ на задачу с ответом, сгенерированным проверяемой программой; если в условии сказано, что числа должны быть разделены строкой, то это так и должно быть; если в условии сказано, что должно быть выведено “Yes” с большой буквы, то “yes” будет признано неправильным ответом, и т.д.
лишние запросы перед считыванием
многие неопытные участники перед считыванием входных данных, пишут фрагмент кода, подобный следующему:
writeln('Введите два числа');
readln(a,b);
writeln(a+b);
Так как система просто сравнивает то, что проверяемая программа подает на выход, то на выходе она обнаруживает набор символов, начинающийся с “Введите два числа” и засчитывает эту строку как неправильный ответ. Никаких приглашающих к вводу операторов в программе быть не должно. Программа должна начинать свою работу непосредственно со считывания данных в том порядке и формате, в каком это указано в условии.
излишние проверки границ
для правильного выбора типов данных в условии грамотно оформленной задачи обязаны быть ограничения на все входные параметры (количество вводимых чисел, их тип (натуральные, целые, вещественные с определенной точностью), диапазон из которого их можно брать, длины строк и т.п.). Условие задачи гарантирует, что все входные данные в тестах будут соответствовать этим ограничениям и проверять подходят ли входные данные под эти ограничения в самой программе - нет необходимости. Эта проверка не скажется на результате выполнения программы, но ее написание может отнять лишнее время. С другой стороны следует понимать, что в пределах оговоренных ограничений жюри вправе генерировать тесты любой сложности. И если в условии сказано, что на вход подается не более 100000 целых чисел по модулю не превосходящих 10^9, то, скорее всего, среди тестов встретится и такой, где будут сто тысяч чисел, каждое из которых близко к миллиарду.
при работе с языком Basic
следует учитывать, что по умолчанию выводится пробел перед числом. Проверяющей системой это может быть в некоторых случаях принято за ошибку. Поэтому рекомендуется при выводе числовых данных использовать команду
print trim(str(a))
, где a – выводимое число.