Для того, чтобы принять участие в олимпиаде, зайдите на сайт olympic.tusur.ru. Используйте для входа в систему логин и пароль, выданные вам во время регистрации участников. Для этого вам достаточно ввести свой логин и пароль в форму входа (верхний правый угол любой страницы) и нажать кнопку Вход (рисунок 1).

Login
Рисунок 1 - форма входа

Перейдите в раздел Олимпиады/Актуальные контесты (рисунок 2).

Contests_1
Рисунок 2 - переход на страницу олимпиад

Выберите олимпиаду Пробный тур (рисунок 3). Пробный тур всякий раз запускается перед основным, чтобы участники удостоверились в отсутствии технических неполадок и возможности беспрепятственно сдавать задачи с данного рабочего места.

Contests_2
Рисунок 3 - выбор олимпиады

После выбора олимпиады, вы окажетесь на вкладке Задания, где можно просмотреть условия всех задач олимпиады. Для переключения между задачами используйте кнопки в верхней части вкладки (рисунок 4). Описание задачи всегда начинается с ограничений по памяти и времени.

Problems
Рисунок 4 - навигация по задачам

Задачи можно сдавать в любом порядке. Написав код для решения одной из задач, перейдите на вкладку Послать.

Вкладка Послать позволяет вам отправлять от своего имени решения на проверку. Убедитесь, что вы правильно выбрали компилятор и номер задачи, скопируйте своё решение в окно для исходного кода. Пример заполнения этой формы для задачи A. "Задача A+B" показан на рисунке 5. Заполнив все поля, воспользуйтесь кнопкой Отправить.

Submit
Рисунок 5 - форма отправки

Обратите внимание: взаимодействие вашего решения и тестирующей системы происходит через стандартный ввод-вывод (как если бы данные в программу вводились с клавиатуры, а выводились ею на экран монитора). Ваша программа не должна выводить ничего, кроме ответа на задачу в формате, оговорённом в условии задачи (всегда внимательно читайте раздел "Выходные данные"), в частности, программа не должна выводить приглашений на ввод значений (таких, как "Введите числа а и b: "). Программа не должна содержать никаких пауз в конце и должна всегда завершаться с нулевым кодом возврата. Примеры правильного и неправильного исходного кода для задачи 1. "Задача A+B" на разных языках приведены в таблицах 1 а-в.

Таблица 1.а - примеры исходного кода на C++.
Правильный кодНеверный код 1Неверный код 2Неверный код 3
#include <cstdio>

using namespace std;

int main() {
    int a, b;
    scanf("%d%d", &a, &b);
    printf("%d", a + b);
    return 0;
}
#include <cstdio>

using namespace std;

int main() {
    int a, b;
    printf("Input A and B: ");
    scanf("%d%d", &a, &b);
    printf("%d", a + b);
    return 0;
}
#include <cstdio>

using namespace std;

int main() {
    int a, b;
    scanf("%d%d", &a, &b);
    printf("a+b = %d", a + b);
    return 0;
}
#include <cstdio>

using namespace std;

int main() {
    int a, b;
    scanf("%d%d", &a, &b);
    printf("%d", a + b);
    return a + b;
}

Таблица 1.б - примеры исходного кода на Pascal/Delphi.
Правильный кодНеверный код 1Неверный код 2Неверный код 3
Var a, b: LongInt;
Begin
    Read(a, b);
    Write(a + b);
End.
Var a, b: LongInt;
Begin
    Write('Input A and B: ');
    Read(a, b);
    Write(a + b);
End.
Var a, b: LongInt;
Begin
    Read(a, b);
    Write('a+b = ', a + b);
End.
Var a, b: LongInt;
Begin
    Read(a, b);
    Write(a + b);
    Halt(a + b);
End.

Таблица 1.в - примеры исходного кода на Java.
Правильный кодНеверный код 1Неверный код 2Неверный код 3
import java.util.Scanner;

public class Main {
  public static void main(String[ ] args) {
    Scanner in = new Scanner(System.in);
    int a, b;
    a = in.nextInt();
    b = in.nextInt();
    System.out.println(a + b);
  }
}
import java.util.Scanner;

public class Main {
  public static void main(String[ ] args) {
    Scanner in = new Scanner(System.in);
    int a, b;
    System.out.println("Input A and B: ");
    a = in.nextInt();
    b = in.nextInt();
    System.out.println(a + b);
  }
}
import java.util.Scanner;

public class Main {
  public static void main(String[ ] args) {
    Scanner in = new Scanner(System.in);
    int a, b;
    a = in.nextInt();
    b = in.nextInt();
    System.out.println("a+b = " + (a + b));
  }
}
import java.util.Scanner;

public class Main {
  public static void main(String[ ] args) {
    Scanner in = new Scanner(System.in);
    int a, b;
    a = in.nextInt();
    b = in.nextInt();
    System.out.println(a + b);
    System.exit(a + b);
  }
}

Содержимое комментариев в исходном коде никак не влияет на ход его проверки.

При решении задач на C++ следует учитывать следующие особенности GNU C++:

  • операторы C++ cin и cout сильно уступают в быстродействии функциям С printf и scanf и не пригодны для достаточно быстрого считывания больших массивов. Чтобы использовать printf и scanf, обязательно подключите модуль <cstdio>, иначе GNU C++ сгенерирует ошибку компиляции (в отличие от Visual C++).
  • Для ввода и вывода длинных целых (long long int) следует использовать спецификатор %lld. Спецификатор %I64d не соответствует стандарту C++ и не обрабатывается GNU C++.
  • Visual C++ позволяет использовать функцию abs(x) как для целых, так и для вещественных чисел. GNU же требует использования для вещественных чисел функции fabs().

В отправляемых решениях на Java главный класс должен называться Main.

Вам может быть интересно, что для компиляции вашего кода используются нижеследующие строки компиляции (таблица 2).

Таблица 2 - используемые строки компиляции.
C++g++ -DONLINE_JUDGE -fno-asm -fno-optimize-sibling-calls -ffloat-store -lm -s -static -x c++ -O2 -o Main Main.cpp
Pascalfpc -dONLINE_JUDGE -So -XS -O2 Main.pas -oMain
Delphifpc -dONLINE_JUDGE -So -XS -Mdelphi -O2 Main.pas -oMain

Для запуска Java используется команда "java -Xmx%dM -DONLINE_JUDGE=true Main". Как видите, для Java тоже используется ONLINE_JUDGE. Если вы не знаете, для чего это, значит, вам это не нужно.

После отправки решения вы автоматически окажетесь на вкладке Попытки, которая отображает информацию о всех ваших посылках. При проверке решения изменяется значение поля "Вердикт". Все возможные значения содержатся в таблице 3.

Таблица 3 – Возможные вердикты
ВердиктУсловие получения
Waiting...Решение ещё не проверялось и в данный момент ожидает своей очереди
Compilation errorОшибка компиляции решения
Testing... NРешение сейчас проверяется на тесте N
Time limit exceeded on test NПревышено допустимое время работы на тесте N
Memory limit exceeded on test NПопытка использовать больше памяти, чем дозволено
Run-time error on test NПрограмма завершилась с ненулевым кодом возврата
Presentation error on test NОшибка в формате выходных данных на тесте N
Wrong answer on test NПолучен неверный ответ на тесте N
AcceptedУспешно пройдены все тесты, решение правильное
IgnoredЖюри исключили данную попытку из рассмотрения

Одно решение получает один вердикт. Если решение не является правильным по каким-либо причинам, будет получен вердикт, стоящий в этой таблице выше. Возможный вид очереди попыток приведён на рисунке 6.

Attempts
Рисунок 6 - очередь попыток

Обратите внимание, что названия задач в очереди попыток являются ссылками. Перейдя по такой ссылке, вы можете ещё раз просмотреть отправленный вами исходный код. Кроме того, вердикт Compilation error также является ссылкой. При переходе по ней вы можете прочесть текст ошибки, выведенный компилятором.

Текущие результаты всех участников доступны на вкладке Рейтинг. При составлении рейтинга учитывается только количество успешно сданных задач. При составлении рейтинга учитывается сумма набранных на каждой задаче баллов, количество попыток и время успешной сдачи каждой из задач. Пример рейтинга показан на рисунке 7.

Standings
Рисунок 7 - рейтинг

В ячейке на пересечении строки участника и столбца задачи может стоять один из символов, описанных в таблице 4. Для сданных задач выводится также время сдачи - время, прошедшее от начала контеста до успешной сдачи.

Таблица 4 – обозначения в таблице результатов
ОбозначениеРасшифровка
.Данный участник не посылал решений на данную задачу
+Участник сдал задачу с первой попытки
-NУчастник предпринял N неудачных попыток, задача не сдана
+NУчастник предпринял N неудачных попыток, прежде чем успешно сдал задачу

В колонке Сдано выводится сумма суммарное число сданных участником задач.

В колонке Время выводится штрафное время. Оно равно сумме времён сдачи плюс по 20 минут за каждую неудачную попытку на задачу, которая всё-таки была сдана.

Выше в рейтинге окажется тот, кто сдал больше задач, а среди участников с равным числом задач выше окажется тот, у кого меньше штрафное время.

Если в ходе участия у вас возникают вопросы, связанные с условиями задач или корректностью тестов на них, вы можете задать их жюри, используя вкладку Вопросы. На этой же вкладке вы увидите ответ, когда он будет дан. Кроме того, жюри могут делать для всех участников олимпиады объявления. Они отображаются на странице с условиями задач (как правило, они связаны с уточнением условий задач).