Олимпиадное программирование для школьников от Яндекса

Правила отбора

Вступительный контест начинается 26 августа и заканчивается в ночь с 12 на 13 сентября
(13 сентября в 4:00 МСК).

Задачи делятся на 6 блоков: [C], [C-B’], [B’-B], [B-A’], [A’-A], [A]. Вам не нужно решать все задачи вступительного контеста. Для отбора в параллель влияют те задачи, у которых помечена эта параллель. На протяжении отбора доступна анонимная таблица результатов.

Для параллели C надо решать задачи: [C], [C-B']
Для параллели B' надо решать задачи: [C-B'], [B'-B]
Для параллели B надо решать задачи: [B'-B], [B-A']
Для параллели A' надо решать задачи: [B-A'], [A'-A]
Для параллели A надо решать задачи: [A'-A], [A]

Вопросы по условиям задач и их проверке участники задают через тестирующую систему при помощи отправки сообщения. По всем задачам суммарно вы можете сделать не более 500 попыток. Обратите внимание, что исходные коды решений не будут доступны в тестирующей системе.

Внимательно прочитайте описание параллелей и примите решение, в какую параллель вы хотите попасть. Рекомендуем справедливо, без завышения, подойти к оценке вашего уровня. Лучше попасть в параллель, которая будет полезнее, пусть и с частичным повторением уже изученного материала. Правила поступления:

В параллель [C] могут быть зачислены только ученики не старше 10 класса.
В параллель [A] могут быть зачислены только ученики 10 класса или старше, ученики 9 класса и младше могут быть зачислены в исключительных случаях на усмотрение преподавателей

Важная информация

Пожалуйста, не обсуждайте задачи отбора с другими людьми. Все задания должны быть выполнены самостоятельно. Запрещается публиковать решения задач в сети интернет, передавать их другим участникам отбора. Участники отбора должны предпринимать разумные меры по обеспечению сохранности своих решений (например, не следует сохранять решения на компьютерах в каталогах, доступных другим пользователям). После окончания вступительных испытаний будет проведена проверка на списывание. Дисквалификация участников отбора или аннулирование им баллов по отдельным задачам происходит в следующих случаях:

Решение о “похожести” решений принимается нами. Участник отбора будет дисквалифицирован, даже если его решение было без его ведома получено и сдано другим участником.

Некоторые рекомендации по поступлению

Предположим, вы решили, что вам подходит параллель [B]. Чтобы попасть в нее, решите как можно больше задач, помеченных [B’-B] и [B-A’]. Также советуем посмотреть и решить задачи, соответствующие параллели на пол ступени ниже от желаемой. Например, для рассматриваемого выше случая, это задачи, помеченные как [C-B’]. Если вы верно определили желаемую параллель, то эти задачи должны вам показаться простыми. Вы их быстро решите и таким образом обезопасите себя: если не попадете в [B], то в [B’] попадете наверняка!

Расшифровка вердиктов тестирующей системы

Исполняемый файл не был создан при компиляции. В этом случае запуск решения на тестах не производится.

Возможные причины:

  • Синтаксическая ошибка в программе;
  • Неверно указан язык программирования;
  • Решение на Visual C++ использует нестандартные возможности языка, например, директиву #include<stdafx.h>, функцию itoa или исключённую из стандарта функцию gets.

Программа нарушает правила олимпиады.

Возможные причины:

  • Нарушение правил олимпиады;
  • Ошибка в программе;
  • Вызов system("pause") в программах на C/C++.

Программа превысила лимит времени работы.

Возможные причины:

  • Неэффективное решение;
  • Ошибка в программе (программа зацикливается);
  • Ошибка в считывании данных (программа ожидает ввода данных, хотя входной поток данных уже закончился);
  • Программа ожидает от пользователя нажатия на клавишу после вывода ответа.

Программа превысила лимит используемой памяти.

Возможные причины:

  • Неэффективное решение;
  • Ошибка в программе;
  • Бесконечная (или очень большая) рекурсия;
  • Ошибки при работе с указателями в C/C++ также могут диагностироваться, как "Превышен лимит по памяти".

Программа совершила некорректное действие в ходе исполнения.

Возможные причины:

  • Некорректное арифметическое действие (деление на ноль, извлечение корня из отрицательного числа, переполнение переменной);
  • Ошибка при работе с памятью и структурами данных (выход за границы массива, обращение к некорректным указателям, удаление несуществующего элемента из структуры данных, переполнение стека, превышение лимита доступной памяти);
  • Нарушение правил олимпиады (работа с файлами, вызов сторонних программ);
  • Бесконечная (или очень большая) рекурсия;
  • Синтаксические и иные (например, обращение к несуществующей переменной) ошибки в программах на Python и других интерпретируемых языках;
  • В программе явно указан ненулевой код возврата.

Вывод программы не соответствует условию задачи.

Возможные причины:

  • Программа выводит ответ в формате, не соответствующем условию задачи;
  • Программа не вывела ничего;
  • Программа выводит результат в файл, а не на стандартный вывод;
  • Ошибка в программе (например, программа вывела ответ дважды);
  • В программе есть отладочный вывод;
  • Программа выводит лишние сообщения типа "Введите число" или "Ответ";
  • Программа должна вывести числа в одной строке через пробел, а вывела их в разных строках или наоборот;
  • Программа должна вывести целое число, а выводит действительное число, запись которого содержит десятичную точку, из-за того, что программа использует действительный тип данных вместо целочисленного.

Программа вывела неправильный ответ.

Возможные причины:

  • Неверный алгоритм решения;
  • Ошибка в реализации алгоритма решения.

Программа выдала правильный ответ на этом тесте.

Возможные причины:

  • Программа корректна;
  • Решение неверное, но у жюри слабая система тестов.

Запуск программы на данном тесте не производился.

Возможные причины:

  • Предыдущий тест данной подзадачи не пройден;
  • Пройдены не все тесты подзадач, необходимых для проверки данной подзадачи.

Тестирущая система не смогла выполнить проверку решение.

Возможные причины:

  • Не волнуйтесь, это будет скоро исправлено.

Примеры решения A+B на популярных языках

#include <cstdlib>
#include <iostream>

using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b;
    return 0;
}
a = int(input())
b = int(input())
print(a + b)
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long sum = 0;
        while (scanner.hasNext()) {
            sum += scanner.nextInt();
        }
        System.out.println(sum);
    }
}
var
   a, b: integer;
begin
   readln(a, b);
   writeln(a + b);
end.