Расскажи мне — и я забуду, покажи мне — и я запомню, позволь мне действовать самому — и я научусь. (Конфуций)


О чемпионате
    Положение
    Смысл участия
    Спонсоры
    Рейтинги
    Регистрация
    Проекты в турнирах

Уроки
    Первые шаги
    Советы начинающим
    Этика
    Полезные материалы

Информатика и вычислительная техника — Computer Science (CS)
    ИВТ в УлГТУ
    Дисциплины ИВТ
    CS → ИВТ

Советы начинающим: как избежать наиболее распространённых ошибок

Не добавляйте в программу сообщения вида «Vvedite X:», «Otvet raven» и тому подобных. Программа проверяется роботом, а он ожидает именно тот вывод, который показан в примерах, и ничего сверх того. Если робот хотел увидеть число 5, а получил строку «Otvet raven 5», даже при верном числовом значении он выдаст вердикт Wrong Answer или Presentation Error. Требования к формату выходных данных являются жёсткими — если нужно вывести «YES», а выведено «yes» или «Yes», то это также считается ошибкой.

Не приостанавливайте работу программы перед завершением (например, до нажатия Enter). Робот передаст на вход только те данные, которые показаны в примере. Даже если ваша программа выведет правильный ответ, но будет ожидать дополнительного нажатия клавиши, робот может решить, что она зависла, и вывести вердикт Time Limit Exceeded.

Входные данные задач ulivt.ru всегда являются корректными (полностью соответствуют формату, описанному в условии в разделе «Входные данные»); специально контролировать их правильность не нужно. Например, если в условии задачи сказано: «Ввод содержит целые числа A и B (-109 ≤ A, B ≤ 109)», то в каждом из тестов действительно будут присутствовать только два целых числа в одной строке, каждое из которых по модулю не больше одного миллиарда. Тем не менее, ваша программа должна правильно обрабатывать любые входные данные, корректные с точки зрения условия задачи. Это означает, что в показанном примере задачи могут быть (и, как правило, обязательно будут) тесты вида «-1000000000 -1000000000», «-1000000000 1000000000», «1000000000 1000000000», и ваша программа должна с ними справляться.

Во всех задачах ulivt.ru первые тесты совпадают с примерами из условий. Если ваше решение получает вердикт «Wrong Answer 1», то убедитесь, что программа запускается, скопируйте текст примера и удостоверьтесь, что ответ вашей программы полностью совпадает с показанным в условии.

Если ваше решение не скомпилировалось (получило вердикт Compilation Error), вы можете просмотреть список ошибок, открыв ссылку «Инфо», а затем «Лог» в правой части строки с вердиктом проверки. Там будет находиться отчёт компилятора.

Вы можете воспользоваться онлайн-компилятором (например, ideone.com). Левая нижняя кнопка позволяет выбрать язык программирования (для ulivt.ru наиболее актуальными являются Pascal (fpc), С++ 5.1, C#, Java). В поле «enter your source code» скопируйте код вашей программы, в поле «enter input (stdin)» — входные данные. После нажатия кнопки Run вы увидите результат компиляции и исполнения вашей программы. Это может оказаться полезным, если ваше решение получает вердикт Compilation Error или Presentation Error.

Обратите внимание на требования, специфичные для различных языков программирования:

  • Pascal: не используйте модуль CRT. Не используйте read() вместо readln() и readln() вместо read().
  • C++: не используйте заголовочные файлы, отсутствующие в стандарте языка (прежде всего stdafx.h и conio.h).
  • Java: главный класс решения должен иметь имя solver.

Внимательно читайте условия задач и тщательнее тестируйте свои решения. Бутерброд может упасть не только маслом вниз или маслом вверх, но также встать на ребро или зависнуть в воздухе, если это не противоречит условию задачи. Возможно, вы не учитываете какой-нибудь хитрый случай (тем не менее, помните, что сами входные данные всегда удовлетворяют указанным в условии ограничениям). Выводите данные именно так, как требуется — если корни уравнения в задании просят вывести в возрастающем порядке, выводить их нужно именно в возрастающем порядке.

Не компексуйте по поводу своего места в турнирной таблице. Начинающий программист должен спокойно относиться к тому, что среди участников турнира есть не совсем начинающие и даже продвинутые. Чтобы стать таким, нужно упорство; впрочем, оно необходимо в любой настоящей работе. Для начинающего программиста главным соперником в турнире является он сам. Решая сегодня на одну задачу больше, чем вчера, вы уже побеждаете самого себя вчерашнего. Чтобы еще раз испытать радость такой победы, нужно постараться завтра решить такую задачу, которая сегодня никак не поддаётся. Активнее общайтесь с теми, кто знает и умеет больше, чем вы. Именно с ними вы сможете сначала преодолеть свое незнание, а в будущем, возможно, даже организовать успешный стартап.