Ошибка представления codeforces

Codeforces. Соревнования и олимпиады по информатике и программированию, сообщество программистов

Всем доброй ночи. Пишу я эти строки ночью, поэтому такое пожелание. Хочу представить вашему вниманию несколько улучшений на Codeforces.

1. Теперь, нажав на ячейку в таблице результатов в истории посылок участника по задачам вы можете обнаружить ссылку исходный текст его решения. Таким образом, у вас есть прямая возможность посмотреть код любого пользователя по любой задаче. Конечно, протокол тестирования с тестами там тоже доступен. Там сейчас не очень удобно смотреть разные решения одного человека по одной задаче — что-нибудь попозже придумаем.

2. Теперь все прошедшие контесты имеют политику открытых тестов. Конечно, вы должны помнить о лицензии при просмотре любых тестов на Codeforces :)

3. Вердикт «Ошибка представления данных» (так же известный в мире как Presentation Error) признан устаревшим, трудно формализуемым и никому не нужным. Известно, что никто в мире не может дать правильный ответ на то в чем разница между Wrong Answer и Presentation Error. У каждого свое мнение, а чекеры зачастую принебрегают правилами хорошего тона в этих вопросах. Без Presentation Error все становиться формальнее. Короче, теперь если ваша программа уложилась в time limit, memory limit и корректно завершилась, то вы получите либо Accepted, либо Wrong Answer. Желаю вам первого. Пользуясь случаем, я объявляю войну Presentation Error-у и буду стараться его искоренять всюду, и побуждать это делать и вас :) Скажем свое решительное нет загрязнению окружающей среды, распространению детской порнографии, Presentation Error-ам и милитаристической политике отдельных государств!

4. В интерфейсе контеста появилась новая вкладка «Запуск». На новой странице вы можете запустить свое решение, скормив ему некоторый тест на стороне сервера. То есть после нажатия кнопки «Запустить» ваш код вместе с тестом уйдет на сервер, там протестируется, а его вывод вернется к вам на страницу. Не обновляйте страницу пока вам не пришел ответ на ваш запуск. Поле «Вывод» обновится автоматически.

Вроде бы все. Желаю и вам трудовых свершений,

MikeMirzayanov

UPD:

5. Еще одно улучшение (забыл о нем в первой версии поста). Теперь, если ваше решение не прошло первый тест (а он всегда совпадает с тестом из условия), то ваша попытка полностью игнорируется. Например, вердикт «Неправильный ответ на тест 1» — это именно тот случай.

Это список Часто задаваемых Вопросов и Ответов, относящихся к работе Codeforces.

  1. Что такое Codeforces? Что это за сайт/ресурс?
  2. Что надо сделать для участия в соревновании? Нужна ли предварительная регистрация?
  3. По каким правилам проводятся соревнования?
  4. На каких языках здесь можно решать задачи? Есть примеры решений?
  5. Я бы хотел провести раунд Codeforces по своим задачам. Что для этого надо сделать? Положено ли вознаграждение авторам?
  6. Какие еще существуют правила на Codeforces?
  7. Какие технические детали полезно знать о тестирующей системе Codeforces?
  8. Что такое рейтинг, дивизионы?
  9. Что такое вклад?
  10. С какими постами в блогах полезно ознакомиться?
  11. Я заметил, что на сайте публикуются решения всех участников и тесты с прошедших соревнований. Каким образом разрешено их использовать?

Вопросы и ответы:

  1. Что такое Codeforces? Что это за сайт/ресурс?

    Codeforces — проект, объединяющий людей, которые интересуются и участвуют в соревнованиях по программированию. С одной стороны Codeforces является социальной сетью, посвященной программированию и соревнованиям по программированию. С другой стороны — это площадка, где регулярно проводятся соревнования, навыки участников отражает рейтинг, а прошедшие соревнования могут быть использованы для подготовки. Codeforces постоянно развивается, и в наших планах усовершенствование платформы для предоставления возможностей проводить контесты участникам самостоятельно, наполнение проекта учебным контентом, развитие Codeforces как тренировочной и учебной платформы.

  2. Что надо сделать для участия в соревновании? Нужна ли предварительная регистрация?

    На Codeforces регулярно проводятся соревнования, участие в которых бесплатно и открыто для всех. Каждый месяц мы проводим ориентировочно шесть соревнований. Для участия вам необходимо зарегистрироваться на сайте (если у вас есть OpenID или Gmail-аккаунт, то не придется даже запоминать пароль), и зарегистрироваться на предстоящее соревнование. Убедитесь, что вы присутствуете в списке зарегистрированных на контест до окончания регистрации. Обычно, если вы не можете принять участие в соревновании официально (например, это соревнование для второго дивизиона, а вы в первом), то можно зарегистрироваться на соревнование для участия вне конкурса.

  3. По каким правилам проводятся соревнования?

    Обычно, они проходят по специальным правилам Codeforces. Если оговорено особо, то могут быть использованы правила международных студенческих соревнований по программированию ACM-ICPC или какие-либо другие модификации. Если коротко, то на соревнованиях по правилам Codeforces вы пишите решения задач, которые во время соревнования тестируются только на небольшом наборе тестов. Прошедшие этот набор тестов решения, их авторы могут блокировать (отказаться от перепосылки решения по этой задаче в будущем, даже в случае обнаружения у себя ошибки). Такие авторы получают возможность просматривать исходники других участников, искать в них ошибки и предлагать тесты, на которых эти решения не работают. Таким образом, можно взломать чужое решение, заработав на этом баллы. После соревнования, все решения, которые прошли претесты и не были взломаны, тестируются на финальном наборе тестов. Задачи дешевеют во время соревнования (чем сдал быстрее, тем больше баллов), неудачные взломы снимают баллы, а успешные — добавляют. Ознакомьтесь с подробной версией правил перед участием.

  4. На каких языках здесь можно решать задачи? Есть примеры решений?
  5. Я бы хотел провести раунд Codeforces по своим задачам. Что для этого надо сделать? Положено ли вознаграждение авторам?

    Хотите провести раунд? Отлично! Мы очень рады! Пожалуйста, прочтите пост и следуйте инструкциям из него.

  6. Какие еще существуют правила на Codeforces?

    Мы не имеем четкого Великого-Свода-Правил-Поведения-На-Codeforces. Однако, разумеется, здесь надо вести себя в соответствии с традиционными требованиями поведения в общественных местах и тематических сообществах. Следующие пункты, конечно, необходимо соблюдать:

    • Не создавайте более одного аккаунта, если вы забыли пароль, то воспользуйтесь системой напоминания пароля.
    • Не используйте грубый, оскорбительный или вводящий в заблуждение хэндл.
    • Не используйте чужое фото в профиле, это некрасиво и вводит в заблуждение членов сообщества.
    • Не грубите, не оскорбляйте других участников и представителей администрации, старайтесь быть вежливым, чтобы с вами было приятно общаться.
    • Участвуя в личных соревнованиях, не общайтесь на тему задач с другими участниками, не используйте чужой код для вставки его в свои решения. Если соревнование командное — обсуждайте задачи только с членами команды.
    • Не пытайтесь дестабилизировать работу как сайта, так и проверяющей системы. Ваши программы должны взаимодействовать только с консолью (для задач со стандартным вводом-выводом) или файлами входных и выходных данных.
    • Не публикуйте, не распространяйте свои решения и идеи решений во время соревнования.
  7. Какие технические детали полезно знать о тестирующей системе Codeforces?

    Система Codeforces напоминает классические Online Judges. Решения тестируются на заранее приготовленных тестах (или взломах, предложенных другими участниками). В результате вы получаете вердикты, смысл которых понятен из названия. Отдельно стоит отметить, что на Codeforces нет вердикта «Ошибка представления данных» (Presentation Error), подобная ситуация трактуется как «Неправильный ответ» (Wrong Answer). Все сомнительные вердикты («Ошибка тестирования» и др.) не учитываются при подведении результатов, равно как и решения, упавшие на тесте 1 (в задачах, где более одного теста).

  8. Что такое рейтинг, дивизионы?

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

  9. Что такое вклад?

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

  10. С какими постами в блогах полезно ознакомиться?
    • О языках программирования и технических аспектах
    • Рейтинг Codeforces
    • Формат соревнований Codeforces
    • Ноябрьская революция цветов и званий (Табель о рангах)
    • Просмотр кода
    • Публикация материалов задач
    • Неофициальный Codeforces FAQ
  11. Я заметил, что на сайте публикуются решения всех участников и тесты с прошедших соревнований. Каким образом разрешено их использовать?

    В самом деле, мы публикуем материалы с прошедших соревнований и они могут быть использованы, например, для индивидуальных занятий. Использование материалов на других Online Judges, публичных соревнованиях и т.п. запрещено. Обязательно прочтите лицензию, перед использованием материалов.

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

Название Runtime error ошибка исполнения на тесте N. Выполнение программы на n -ом тесте прервалось с ошибкой
Дата публикации 21.12.2013
Размер 78.91 Kb.
Тип Тесты

5-bal.ru > Авто-обзор > Тесты

Общие правила участия в Турнире и инструкции для участников
Порядок проверки решений
Оба этапа Турнира проводятся по правилам международного соревнования ACM ICPC. Процесс проверки решений полностью автоматизированный. Жюри готовит набор тестов (входных данных) для каждой задачи. Решение, присланное участником, засчитывается при условии, если оно прошло все тесты (выданы правильные ответы, решение уложилось в определенный объем времени и объём использованной памяти); в противном случае , засчитывается неудачная попытка. Частичные решения не засчитываются.
Написав решение, участник отправляет его исходный код на проверку с помощью браузера. Тестирующая система компилирует код и запускает программу один раз для каждого теста (на вход программы подставляются входные данные, затем проверяется правильность вывода, выданного программой для текущего теста). Тесты проверяются, начиная с 1-го и далее по порядку.
Тесты держатся в секрете до окончания тура. Однако первый тест (а иногда и второй, и третий…) приводится в условии задачи. Проверка одного решения занимает от нескольких секунд до пары минут, после чего в браузере выводится результат проверки.
Задачи можно сдавать в любом порядке. Участник может делать любое количество попыток по каждой задаче; однако каждая неудачная попытка негативно сказывается на рейтинге, который участник получит после успешной сдачи задачи.
Результатом проверки может быть один из следующих вердиктов:

  • Accepted – решение зачтено. Решение прошло все тесты, засчитано полное решение, участник поднимается в рейтинговой таблице (которая обновляется немедленно). При этом фиксируется время, прошедшее от начала соревнования до момента отправки решения, количество предшествующих неудачных попыток по этой задаче – эти факторы влияют на итоговое положение участника.
  • Compilationerror – ошибка компиляции. Исходный код, присланный участником, не компилируется. Можно нажать на ссылку «инфо», чтобы увидеть сообщения, выданные компилятором. Попытка игнорируется.
  • Wronganswer – неправильный ответ на тесте N. Решение прошло первые N-1 тестов и выдало неверный ответ на N-ом. Засчитывается неудачная попытка.
  • Presentationerror – ошибка представления на тесте N. Тестирующая система не может оценить ответ как правильный или неправильный, т.к. не соблюдён формат выходных данных. Перечитайте раздел «Вывод» условия задачи.
  • Runtimeerror – ошибка исполнения на тесте N. Выполнение программы на N-ом тесте прервалось с ошибкой («Программа выполнила недопустимую операцию и будет закрыта. «). Наиболее популярные причины: обращение за границы массива, деление на ноль, переполнение стека и т.п.
  • Time limit – превышено ограничение времени на тесте N. Решение работало слишком долго (или вовсе зависло) на N-ом тесте. Наиболее популярные причины: неэффективный алгоритм решения задачи; ошибка в программе.
  • Memorylimit – превышено ограничение объёма используемой памяти на тесте N. При решении сделана попытка использовать больше памяти, чем установлено условием задачи.

Тренировочный тур
Чтобы участники могли заранее ознакомиться с тестирующей системой, она будет запущена в тестовом режиме с 1-го по 13-е марта. В этот период предлагается всем будущим участникам зайти на сайт http://contest.khsu.ru, зарегистрироваться под любым именем и решить представленные там задачи, отправляя решения на проверку.
Предлагается начать решение с задачи «A+B». Она находится в разделе «Сборники», «Задачи с сайта Olympiads.ru». В разделе «Помощь» вы найдёте примеры её решений.
По окончании тренировочного тура , 14 марта, все задачи, отправленные решения задач и все учётные записи будут удалены. Результат тренировочного тура не учитывается при определении результатов 1 или 2 этапов Турнира.
1-й этап (очное и заочное участие школьников)
Тур будет проходить на сайте http://contest.khsu.ru. Учётные записи будут внесены в систему заранее на основе данных, введённых зарегистрировавшимися до 10 марта на сайтах http://clck.ru/8_rkG и http://clck.ru/8_rgq.
На 1 этапе для школьников проводится один тур, общий для очных и заочных участников, с одним набором задач, в одно время (см. расписание) и общей рейтинговой таблицей.
Решение задач нужно сдавать на сайте http://contest.khsu.ru в разделе «Турниры», «ХГУ 2013 Школьники». Условия задач будут выложены с началом тура на сайте в указанном разделе в форматах Microsoft Word и PDF. Участники очного тура 1-го этапа, предварительно зарегистрировавшиеся на очное участие, получат твёрдую копию условий задач.
Результаты, полученные к концу тура, 1 этапа, считаются предварительными. Окончательные результаты 1 этапа выставляются на сайт и оглашаются на занятиях школы программистов 24 марта.
Незадолго до начала тура 1 этапа (см. расписание) будет запущен пробный тур для проверки работоспособности тестирующей системы, и чтобы дать возможность участникам освоиться на рабочих местах. В процессе пробного тура участники могут решать и отправлять на проверку любые задачи, представленные в системе. Результат пробного тура никак не учитывается.

К началу основного тура 1 этапа все отправленные решения и лишние задачи будут удалены из системы.

По окончания основного тура 1 этапа участники приглашаются на разбор задач.
2-й этап
Тур 2 этапа будет проходить на сайте http://contest.khsu.ru. Учётные записи будут внесены в систему заранее на основе данных, введённых зарегистрировавшимися до 4 апреля на сайте http://clck.ru/8_Wg6 .

На 2-м этапе возможно только очное участие. Все участники получают твёрдую копию условий задач. Некоторые материалы могут быть дополнительно предоставлены в электронном виде.
Окончательные результаты объявляются в день проведения тура после разбора задач.

Дополнительные комментарии для участника
Оба этапа проводятся по правилам международного соревнования ACM ICPC. Процесс проверки решений полностью автоматический. Решение, присланное участником, засчитывается при условии, если оно прошло все заготовленные жюри тесты (выданы правильные ответы, решение уложилось в определенный объем времени и объем использованной памяти); в противном случае засчитывается неудачная попытка.
Чем больше задач сдаёт участник, тем выше его рейтинг. Участники, сдавшие одинаковое число задач, ранжируются с учётом кол-ва неудачных попыток и времени, затраченного на решение сданных решений задач.
Рейтинговая таблица обновляется в реальном времени. Однако за полчаса до окончания тура она может быть заморожена (участник не будет видеть, изменения, происходящие с другими участниками). Решение о заморозке жюри примет во время тура.
Если у участника во время тура появляются вопросы по задачам, их нужно задавать через тестирующую систему (см. раздел «Описание тестирующей системы» настоящих правил). Имейте в виду, что первый тест (а иногда и второй, и третий…) обязательно приводится в условии задачи (раздел «примеры»). Строго соблюдайте формат входных и выходных данных. Не стоит выводить лишних фраз вроде «Введите число N», и других, не предусмотренных условием задачам (раздел «Вывод»); в противном случае тестирующая система не поймёт ответ и зачтёт неудачную попытку с вердиктом «Presentation error» (ошибка представления).
Вводить входные данные нужно из консоли (клавиатура/стандартный ввод) или из файла input.txt – по желанию участника. Выводить данные – в консоль (на экран/стандартный вывод). Вывод в файл недопустим.
Ограничения на время и объём используемой памяти к каждой задаче выставляется таким образом, чтобы решения жюри проходили как минимум с двукратным запасом по этим параметрам.
Если вас интересует разбор задач, тесты, решения – обратитесь к жюри после тура.

Описание тестирующей системы
Стартовая страница выглядит так:

Чтобы начать работать с сайтом, следует слева выбрать свою учётную запись и ввести пароль. Пароль должен быть известен только участнику. Если у вас еще нет учётной записи, создайте её, нажав на ссылку «зарегистрироваться», где нужно будет задать имя и пароль учётной записи.
На тренировочном туре вы должны создать себе учётную запись, зарегистрировавшись под любым именем, и задав себе любой пароль. На турах 1-го и 2-го этапа учётные записи участников будут внесены в систему заранее, поэтому участнику нужно будет только выбрать из списка своё имя и ввести свой пароль.
Если пароль введён правильно, то вы увидите страницу участника:

Предлагаем начать работу с раздела «Сборники»:

Выберите сборник «Задачи с сайта Olympiads.ru»; вы увидите перечень задач в этом сборнике:

Обратите внимание на ссылку «Обсудить» напротив каждой задачи. Нажав на неё можно задать вопрос жюри. Подробнее см. ниже.
Выберите задачу «A+B». Страница задачи выглядит примерно так:

В верхней части – условие задачи. Чтобы отправить решение задачи, можно либо вставить исходный код в поле «Текст попытки», либо (справа от этого поля) выбрать «файл попытки» (нужно будет нажать кнопку «Выберите файл»):

Затем выберите, на каком языке написана ваша программа:

Ошибка исполнения на тесте 1

Что значит данная ошибка? Проверил: 1. Это не деление на 0, т.к в коде нет деления вообще. 2. За пределы массива не вылезаю, т.к массив в разы больше, чем входные данные. 3. Переполнение тоже невозможно. 4. За передел памяти тоже не выхожу. Я тут недавно сижу, но интересно, а нет ли поста с полным описание каждой ошибки? Буду очень благодарен за помощь.

Приведенный ниже код с помощью GNU C ++ 11 компилятор и код работает нормально, но я не знаю, как это работает?

Я считаю , что нет никакого способа , чтобы выполнить system(«cls»); на машине судьи — просто удалить , что из кода.

Кроме того, вы выходите за пределы здесь , когда i == n — 1 :

Хотя технически не выходить за пределы массива , потому что n , но в любом случае вы обращаетесь неинициализированный элемент массива.

Содержание

  • 1 Общий принцип
  • 2 Ввод и вывод данных
  • 3 Тестирование решений
    • 3.1 CE — Ошибка компиляции (Compilation Error)
    • 3.2 TLE — Нарушен предел времени (Time Limit Exceeded)
    • 3.3 ILE — Нарушен предел ожидания (Idleness Limit Exceeded)
    • 3.4 MLE — Нарушен предел памяти (Memory Limit Exceeded)
    • 3.5 RTE — Ошибка во время выполнения (Run-time Error)
    • 3.6 PE — Ошибка представления (Presentation Error)
    • 3.7 WA — Неправильный ответ (Wrong Answer)
    • 3.8 OK — Принято (Accepted)
    • 3.9 CF — Ошибка тестирования (Check Failed)
    • 3.10 SV — Нарушение безопасности (Security Violation)
  • 4 Особенности языков программирования
    • 4.1 Выбор языка программирования
  • 5 Конфигурация тестирующего сервера
  • 6 Языки программирования

Общий принцип

В систему посылаются только файлы с исходным кодом, а сама посылаемая программа должна состоять только из одного файла: *.dpr, *.cpp, *.java, *.pas и т. д. Нельзя отправить в систему скомпилированный exe-файл, файл проекта Visual Studio и т. п.

В решениях запрещается:

  • осуществлять доступ к сети;
  • выполнять любые операции ввода/вывода, кроме открывания, закрывания, чтения и записи стандартных потоков stdin, stdout, stderr и файлов с именами, явно прописанными в условии задачи;
  • сознательно «ломать» тестирующую систему;
  • выполнять другие программы и порождать новые процессы;
  • изменять права доступа к файловой системе;
  • работать с поддиректориями;
  • создавать и манипулировать ресурсами GUI (окна, диалоговые сообщения и т. д.);
  • работать со внешними устройствами (звук, принтер и т. д.);
  • выполнять прочие действия, призванные нарушить ход учебного процесса.

Решения выполняются в специальном окружении, обеспечивающем безопасный запуск, и попытка выполнить какие-либо из указанных действий закончится, скорее всего, получением вердикта «Ошибка во время выполнения».

Ввод и вывод данных

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

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

Внимательно проверяйте имена файлов в решениях на соответствие условию задачи.

Если в коде решения имена файлов указаны неверно, это может приводить к непредсказуемым последствиям. Так, если имя выходного файла указано неверно и требуемый по условию файл не создаётся, система, скорее всего, выдаст вердикт «Ошибка представления».
В случае, когда в решении на Java перепутано имя входного файла и делается попытка открыть несуществующий файл, выбрасывается исключение. Если автор решения не перехватывает его, программа завершается с вердиктом «Ошибка во время выполнения». Если же исключение обрабатывается, то вполне возможны и другие вердикты в зависимости от того, отработает ли программа и что окажется в выходном файле. Если в решении на C++ неправильно указан входной файл и ошибки специально не обрабатываются, чтение из файла может приводить к чтению произвольных данных («мусора»). Если в программе вместо чтения из файла делается попытка считать данные со стандартного ввода (stdin, который обычно связан с клавиатурой консоли), программа заблокируется («повиснет») в ожидании ввода и будет завершена с вердиктом «Превышен предел времени».

Решение может выводить произвольные данные «в консоль», то есть в стандартные потоки stdout, stderr, которые обычно связаны с консольным окном (например для отладки). Это не запрещается и не влияет на результат. Проверяется только содержимое выходного файла. Следует помнить, что на вывод тратится дополнительное время, поэтому большой объём отладочной информации может критически замедлить вашу программу. Вывод в stderr медленнее, чем в stdout, поскольку не буферизируется.

Тестирование решений

Каждое отправленное решение проходит на сервере проверку на нескольких тестах. Задача считается решённой только в случае прохождения всех тестов. Решение запускается на всех тестах, которые есть по задаче, и процесс тестирования не прерывается на первом непройденном тесте, как это делается в соревнованиях типа ACM.

Тестирование осуществляется автоматически, поэтому решения должны строго следовать формату входных и выходных данных, который описан в условии. В случае неясности можно задавать вопросы преподавателям. Если не сказано явно, все входные данные можно считать корректными и удовлетворяющими ограничениям из условия. Например, если сказано, что на входе целое число от 1 до 100 включительно, то можно считать, что это так и есть, и проверять неравенства и выводить ошибку в случае, если это не так, в коде решения нет необходимости.

Тесты по каждой задаче не упорядочены по сложности, по размеру входных данных, по какому-то иному критерию, а следуют в исторически сложившемся порядке их добавления в систему.

Не гарантируется, что первый тест в системе будет совпадать с тестом из условия (зачастую это не так).

Результатом проверки является итоговое сообщение системы и, возможно, в скобках номер первого теста, вызвавшего ошибку (если таковая имела место). Например, вердикт «Неправильный ответ (43)» означает, что решение успешно скомпилировалось и прошло без ошибок первые 42 теста по задаче, но на тесте под номером 43 выдало неверный ответ.

Далее опишем все допустимые сообщения тестирующей системы и укажем возможные причины их появления.

CE — Ошибка компиляции (Compilation Error)

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

Посмотреть вывод компилятора и понять, почему код не удаётся скомпилировать, можно путём нажатия на иконку Compileerror.png в таблице с вашими решениями. Наиболее частые причины ошибки компиляции: выбран неверный компилятор (для другого языка программирования или же несовместимая версия, например Java v7 вместо Java v8), отправляется не тот файл (файл проекта IDE вместо файла с исходным кодом).

Время работы компилятора ограничено 30 секундами. Если он не успел отработать по каким-либо причинам, также будет выставлен вердикт «Ошибка компиляции».

TLE — Нарушен предел времени (Time Limit Exceeded)

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

Тестирующая система учитывает так называемое процессорное время (CPU Time) выполнения процесса в операционной системе. Нет смысла делать решение задачи многопоточным, потому что распараллеливание хоть и позволяет сократить реальное время работы (Wall Time), но не уменьшает процессорное время.

Процесс-решение запускается на тесте, и если процесс не успевает завершиться в течение отведённого времени, он принудительно завершается и выставляется вердикт «Нарушен предел времени». В качестве времени работы решения на тесте указывается то время, которое процесс фактически проработал до того, как был приостановлен. Нет возможности узнать, сколько бы программа проработала, если бы не была снята по времени. Если при ограничении по времени на тест в 1 секунду вы видите, что решение получает вердикт «Нарушен предел времени» и работает 1015 мс, то нельзя это понимать как «решение чуть-чуть не успевает, надо ускорить его на 15 мс». Если решение останавливается по времени, то вывод программы никак не проверяется на предмет его правильности.

Возможные причины появления ошибки «Нарушен предел времени»:

  • неэффективный алгоритм (например, в решении реализован алгоритм с временной сложностью Ω(n2), хотя задача предполагает решение за O(n log n));
  • недостаточно эффективная программная реализация (идея и алгоритм правильные, но код написан не очень хорошо: например, ввод данных из файла осуществляется медленно, чрезмерно часто выделяется и освобождается память);
  • попытка чтения данных с консоли (std::cin, scanf(), getchar() в C++, System.in в Java), тогда как нужно читать входные данные из файла (в этом случае программа блокируется в ожидании ввода и зависает, не расходуя при этом CPU Time, поэтому такой случай тестирующая система обрабатывает отдельно);
  • ошибка в программе (например, программа входит в бесконечный цикл).

Не рекомендуется «пропихивать» медленное решение, отправляя его многократно, пока система не «согласится» его принять. Решение в любой момент может быть перетестировано и, соответственно, может перестать быть принятым из-за нарушения предела времени.

ILE — Нарушен предел ожидания (Idleness Limit Exceeded)

Программа зависла в ожидании, не потребляя при этом ресурсы процессора.

Такое может быть, например, если согласно условию чтение входных данных осуществляется из файла, а решение выполняет ввод с консоли. В этом случае процесс решения заблокируется в ожидании нажатия клавиш на клавиатуре. Через некоторое время система тестирования принудительно завершит этот процесс и выставит вердикт ILE.

MLE — Нарушен предел памяти (Memory Limit Exceeded)

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

Ограничение по памяти есть не для всех задач. Гарантируется, что для всех тестов в рамках одной задачи ограничение по памяти одинаково.

Как и в случае нарушения ограничения по времени, программа при нарушении ограничения по памяти аварийно завершается тестирующей системой, её вывод не проверяется на правильность. Точно так же не следует воспринимать размер памяти, использованной до момента аварийного завершения, как объём, которого решению хватило бы для успешной работы. Более точно, вердикт MLE, полученный с использованием 257 МБ памяти, говорит о том, что приложение успело использовать 257 МБ памяти и было принудительно остановлено, но ничего не говорит о том, сколько памяти использовало бы приложение, не будучи принудительно остановленным.

В некоторых случаях при разовом выделении чрезмерно большого блока в памяти, этот запрос может быть не выполнен операционной системой, что в результате может привести к ошибке во время выполнения или (значительно реже) другому результату неопределённого поведения в случае с языком C++.

RTE — Ошибка во время выполнения (Run-time Error)

В операционной системе есть такое понятие, как код завершения процесса (Exit Code). Этот подход используется как в Windows, так и в ОС семейства UNIX. Это целое число, которое остаётся после прекращения выполнения программы. Общепринятое соглашение гласит, что нулевой код завершения свидетельствует о нормальном завершении процесса без ошибок, любой другой — об ошибке. Тестирующая система проверяет код завершения вашего решения, и если он не равен нулю, выставляет вердикт «Ошибка во время выполнения». При этом никак не проверяется то, что решение успело вывести в выходной файл.

Укажем типичные причины ошибок во время выполнения.

  • Использована директива package в коде программы на Java.
    В результате программа на Java находится не в пакете по умолчанию. Компилятор Java сгенерировал класс в некотором пакете (ошибки компиляции нет), а при запуске виртуальная машина Java не смогла найти этот класс, потому что искала в пакете по умолчанию (возникло исключение ClassNotFoundException с сообщением Could not find or load main class).
  • Выход за границы допустимой области памяти в программе на C++.
    Выход за границы массива, разыменование неправильного указателя, обращение к нулевому указателю.
  • Переполнение системного стека.
    Эта причина является частой в случае рекурсии. Вообще, системный стек используется для размещения параметров функций, локальных переменных. Его размер, как правило, невелик и по умолчанию равен 1 МБ. При вызове функции стековая структура позволяет естественным образом сохранить текущие состояния всех локальных переменных и вернуться к ним, когда вызов завершится и управление вернётся в исходную точку. Если в алгоритме используется глубокая рекурсия, то размера стека может не хватить для хранения контекстов всех вызовов. Решений этой проблемы два:

    1. переписать алгоритм нерекурсивно (например с использованием своего стека, а не системного);
    2. увеличить размер системного стека, что делается по-разному для разных языков программирования (см. примеры для C++ (Visual Studio) и Java).
  • Ошибка ввода-вывода (попытка открыть несуществующий входной файл).
    Нужно проверить правильность имени входного файла.
  • Программа целенаправленно была завершена с ненулевым кодом выхода.
    В программе на C++ это может быть, если функция main() в C++ вернула ненулевой код (return (non-zero) в функции main()). Рекомендуется завершать функцию main() оператором return 0 (в старых компиляторах C++ это обязательно, современные компиляторы же подразумевают возврат нулевого кода автоматически). Также программу на C++ с произвольным кодом завершает вызов exit().
    В программе на Java можно завершить процесс с произвольным кодом с помощью System.exit().
  • Необработанное исключение.
    Причин возникновения исключений может быть масса. Например, если в Java функции Integer.parseInt() / Double.parseDouble() была передана строка, содержащая пробельные символы (ASCII-коды 9, 10, 13, 32), выбрасывается исключение NumberFormatException.
  • Целочисленное деление на ноль.
    При выполнении деления нужно всегда думать, а не может ли делитель оказаться равным нулю. В то же время стоит отметить, что вещественное деление на ноль (в типах с плавающей точкой double, float) по умолчанию не приводит к завершению программы, а даёт специальные значения +Inf, -Inf или NaN.

PE — Ошибка представления (Presentation Error)

Наиболее частая причина возникновения этой ошибки — не найден выходной файл. Возможно, вы забыли создать выходной файл и выводите ответ в консоль (он в таком случае игнорируется). Проверьте имена входного и выходного файла в вашей программе на соответствие условию задачи. Исторически сложилось, что в разных задачах входной и выходной файл именуются по разным правилам: input.txt и output.txt, in.txt и out.txt, input.in и output.out (обратите внимание, что нет расширения txt), [задача].in и [задача].out

Для некоторых задач программа проверки (checker) дополнительно удостоверяется, что ваш вывод соответствует определённому формату, и выдаёт ошибку представления в случае, если это не так. Например, если в задаче нужно вывести число, а вы выводите строку. Или если в задаче нужно вывести сначала число k, затем k чисел, а ваше решение выводит число k и далее (k + 1) чисел (то есть решение выводит в файл лишние данные).

Также имейте в виду, что отлавливание исключений и других ошибок не должно быть самоцелью. Если исключение не обрабатывается каким-либо образом, обычно нет смысла его ловить по следующей причине. Аварийное завершение работы программы в результате ошибки во время выполнения приводит к вердикту «Ошибка во время выполнения», только если соответствующее исключение было «проброшено» наружу, а не «заглушено» на каком-то этапе. Если исключение отлавливается, но никак не обрабатывается, то в результате возникновения соответствующей ошибки следует ожидать вердикт «Ошибка представления» или же «Неправильный ответ» (реже).

WA — Неправильный ответ (Wrong Answer)

Для многих задач ответ однозначен, и проверяется просто побайтовое совпадение вашего выходного файла и сохранённого правильного ответа. Такая проверка требует строгого соблюдения формата файла, не допускает незначащих пробелов и пустых строк. Например, если правильный ответ имеет вид (пробелы обозначены символом ␣)

5
1␣2␣3␣4␣5

и решение вывело

5
1␣2␣3␣4␣5␣

(лишний пробел в конце второй строки), то будет получен вердикт «Неправильный ответ». Для некоторых задач написаны проверяющие программы (checker), которые к таким различиям лояльны и засчитывают ответы с лишними пробелами как правильные. Всегда точно следуйте формату файла и не выводите лишних пробелов, и проблем не будет.

После последней строки файла можно выводить или не выводить перевод строки — не важно. Есть две точки зрения в зависимости от того, с какой стороны смотреть на символ перевода строки:

  1. каждая строка завершается переводом строки, поэтому n в конце файла нужен;
  2. перевод строки является разделителем между соседними строками, поэтому n в конце файла не нужен.

Первая точка зрения является общепринятой. Так, компилятор gcc, система контроля версий git и многие другие программы выдают предупреждение no newline at the end of file, если в самом конце файла нет символов новой строки. Обсуждение вопроса можно почитать на stackoverflow.

Поэтому рекомендуется придерживаться первого подхода и завершать все строки переводами строк.

Другие очевидные причины получения неправильного ответа:

  • неверный алгоритм;
  • ошибка в программе.

Бывает такое, что решение от запуска к запуску даёт разные ответы, или же правильно работает на одном компьютере и неправильно на другом. Такие случаи, как правило, связаны с ошибками в решениях.

OK — Принято (Accepted)

Программа работает правильно и прошла все тесты с соблюдением всех ограничений.

Если решение принято системой, это ещё не означает, что в его основе лежит правильный алгоритм. В любой момент могут появиться новые наборы входных данных, на которых будут заново протестированы все решения по задаче. Если ваше решение на самом деле не полностью верно и прошло только из-за недостаточно сильного набора тестов, оно может в будущем потерять статус «Принято».

CF — Ошибка тестирования (Check Failed)

Если указан номер теста, то программа успешно завершается на предложенном тесте (укладывается в отведённые время и память и не совершает ошибок во время выполнения), но результат не удаётся проверить из-за ошибок в программе проверки. Вашей ошибки в этом случае, возможно, никакой нет и после исправления программы проверки будет получен вердикт OK. Не исключены ещё два варианта: WA, PE.

Имейте в виду, что если ошибка тестирования возникает на первом же тесте, то на остальных Ваше решение не запускается вовсе. Соответственно, в этом случае после устранения ошибок программы проверки вердикты TLE, MLE, RTE также могут возникнуть в любом тесте, кроме первого.

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

Если у Вас возникла ошибка тестирования, мы, скорее всего, это заметим достаточно быстро. Тем не менее, имеет смысл задать вопрос через пункт «Сообщения» в меню курса. Не забывайте выбрать задачу, которой касается этот вопрос.

SV — Нарушение безопасности (Security Violation)

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

К их числу относится попытка создания новых процессов. Вашим решениям запрещено запускать на выполнение другие программы. Например, в коде

порождается новый процесс командной оболочки cmd.exe и в нём выполняется команда pause. Пожалуйста, не пишите так, для достижения аналогичного эффекта можно использовать другие приёмы.

Особенности языков программирования

У каждого конкретного языка программирования есть свои особенности, о которых полезно знать. Далее рассмотрены отдельные особенности написания решений на разных языках программирования:

  • C++;
  • Java;
  • C#;
  • Python.

Выбор языка программирования

Разные задачи можно решать на разных языках. Часто для конкретной задачи тот или иной язык оказывается предпочтительным. Например, если в задаче требуются тяжёлые вычисления, то её может быть проще сдать на C++, чем на Java, за счёт более быстрой работы программы на C++ (для кода на Java могут потребоваться более изощрённые оптимизации, чтобы он прошёл по времени). С другой стороны, если задача требует проведения вычислений с большими целыми числами, выходящими за пределы диапазона 64-битных переменных, то есть «длинной арифметики», то решение существенно проще написать на Java, воспользовавшись готовым качественно написанным классом BigInteger для операций с числами произвольной длины.

Конфигурация тестирующего сервера

Сервер, на котором осуществляется запуск решений, является виртуальной машиной, выполняющейся внутри Microsoft Hyper-V Server 2012 R2. Виртуальный компьютер работает под управлением Windows 7 Professional x64, оснащён процессором Intel® Core™ i3-4130 (Haswell, кэш 3 МБ, 3,40 ГГц, доступно только одно ядро) и 4 ГБ оперативной памяти. Для хранения входных и выходных файлов используется RAM-диск, чтобы обеспечить максимальную производительность ввода-вывода.

Языки программирования

На странице учебного курса в системе на вкладке «Компиляторы» можно ознакомиться с актуальным списком доступных языков программирования, версиями компиляторов и параметрами командной строки их вызова.

Размер системного стека явно не задаётся (используется размер по умолчанию). При компиляции кода на C++ включен режим оптимизации O2.

Перейти к контенту

Почему выдает «ошибка исполнения»

31.05.2013, 00:40. Показов 4253. Ответов 1


Доброго времени суток. У меня проблема. Сегодня написал свою первую программу на java и отправил решение на проверку на сайт Codeforces.ru . Но решение не прошло, вердикт «ошибка исполнения». Проверяю на компе, все работает. Почему выдает такую ошибку?
Вот сам код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package javaapplication1;
import java.io.*;
import java.util.*;
 
 
public class JavaApplication1 {
    public static void main(String[] args) throws IOException {
        int [][]ar;
        int xPos = 0,yPos = 0,step = 0;
        ar = new int[5][5];
        Scanner A = new Scanner ( System.in);
      for (int i=0;i<5;i++)
      {
          for (int j = 0; j < 5; j++)
          {
          ar[i][j]=A.nextInt();
          if (ar[i][j] == 1) 
                  {
                     xPos = i;
                     yPos = j;
                  }
          }
      }
      while (xPos != 2)
      {
         if (xPos>2) {--xPos; step++;}
         if (xPos<2) {++xPos; step++;}
      }
      while (yPos !=2)
      {
          if (yPos>2) {--yPos; step++;}
          if (yPos<2) {++yPos; step++;}
      }
      System.out.print(step);
      }   
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Используя ссылку ниже

http://codeforces.com/problemset/problem/556/B

Приведенный ниже код с использованием компилятора GNU C ++ 11 и этот код работает нормально
но я не знаю, как это работает?

#include<iostream>
#include<conio.h>
#include<windows.h>
int test(long int n,long int number[])
{
int flag=0;
for(int i=0;i<n;i++)
{
if(number[i+1]==number[i]+1)
flag++;
}
if(flag==n-1)
return 1;
else
return 0;
}
void rot_gears(long int n,long int number[])
{
system("cls");
int t;
for(long z=0;z<n*n;z++)
{
for(long i=0;i<n;i++)
{
if(i%2==0)
{
if(number[i]==n-1)
{
number[i]=0;
}
else
number[i]++;
}
else if(i%2!=0)
{
if(number[i]==0)
number[i]=n-1;
else
number[i]--;
}
}
t=test(n,number);
if(t==1)
break;

// output(n,number);
//cout<<"nn";
}
if(t)
std::cout<<"YES";
else
std::cout<<"NO";
}
int main()
{
long int n,teeth,number[10000];
std::cin>>n;
std::cin>>teeth;
for(long int i=n-1;i>=0;i--)

{
number[i]=teeth%10;
teeth/=10;
}

// output(n,number);
rot_gears(n,number);
return 0;

}

1

Решение

Я считаю, что нет способа казнить system("cls"); на машине судьи — просто удалите это из кода.

Также вы выходите за пределы здесь, когда i == n - 1:

for(int i=0;i<n;i++)
{
if(number[i+1]==number[i]+1)
//       ^^^^^ here

Хотя технически вы не выходите за пределы массива, потому что n <= 1000, но в любом случае вы получаете доступ к неинициализированному элементу массива.

1

Другие решения

У меня есть прога которая находит минимум каждой строки и добавляет его в список.
Локально у меня все работает, но на проверяющей системе codeforces выдает ошибку.

Traceback (most recent call last):
  File "program.pys3", line 1, in <module>
    n = int(input()) 
EOFError: EOF when reading a line

вот сам код

n = int(input()) 
a = []
b = []
for i in range(n):
    a.append([str(j) for j in input().split()])
for i in range(len(a)):
    for j in range(1):
        if len(a[i][0]) == 1:
            b.append(a[i][0])
        else:
            for v in range(len(a[i][0])):
                l = min(a[i][0][j], a[i][0][j+1])
                a[i][0] = a[i][0][:j] + l + a[i][0][j+1:]
                a[i][0] = a[i][0][:j+1] + l + a[i][0][j+2:]
            b.append(l)
t_str = ''.join(map(str, b))
print(t_str)

введите сюда описание изображения

задан 8 сен 2020 в 8:25

Vlad's user avatar

VladVlad

396 бронзовых знаков

3

Вы когда у себя проверяете — число n с клавиатуры вводите? Или из файла?

Может быть, дело в том, что на проверяющей системе некому ввести число?

Обычно указывают имя файла input.txt, из которого вводятся значения в программу. У вас нигде этого файла не указано. Поэтому и ошибка в первой же строке: Хозяин, я файл найти не могу! не знаю, какой искать!

ответ дан 8 сен 2020 в 8:32

S.H.'s user avatar

S.H.S.H.

10.7k1 золотой знак15 серебряных знаков38 бронзовых знаков

3

Я пытаюсь решить проблему 1A для codeforces

Но я продолжаю получать Тест: # 1, время: 0 мс, память: 1828 КБ, код выхода: 1, код выхода из проверки: 0, вердикт: RUNTIME_ERROR Вы можете проверить мою запись здесь и найти мой код ниже, я пытался запустить программа локально, и она работает нормально, и она прошла тест-кейс на сайте

#include<stdio.h>
int calculateSquare(int n , int m , int a){
int length=0;
int width = 0;
if(n%a != 0){
    length = (n/a)+1 ;
}
else{
    length = n/a ;
}
 if(m%a != 0){
    width = (m/a)+1 ;
}
else{
    width = m/a ;
}

return length*width ;


 }
 void main(){
int n,m,a ;

scanf("%d %d %d",&n,&m,&a);
int output = calculateSquare(n,m,a);
printf("%d",output);
}

3 ответа

Лучший ответ

  • int calculateSquare(int n , int m , int a)

Возвращаемый тип: int и возвращаемое значение: length*width

В худшем случае a будет 1 и n, m будет 10 9 , как указано в проблема

< Сильный > Ввод

Вход содержит три положительных целых числа в первом строка: n, m и a (1 ≤ n, m, a ≤ 10 9 ).

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

Лучше использовать long long int, если компиляция соответствует стандарту C99.


1

Meninx — メネンックス
15 Фев 2017 в 01:31

При попытке «побить время» лучше не использовать «дорогие» функции I.O.

Предложить следующие две функции:

#include <stdio.h>

void fastRead( size_t *a );
void fastWrite( size_t a );

inline void fastRead(size_t *a)
{
    int c=0;
    // note: 32 is space character
    while (c<33) c=getchar_unlocked();

    // initialize result value
    *a=0;

    // punctuation parens, etc are show stoppers
    while (c>47 && c<58)
    {
        *a = (*a)*10 + (size_t)(c-48);
        c=getchar_unlocked();
    }
    //printf( "%s, value: %lun", __func__, *a );
} // end function: fastRead


inline void fastWrite(size_t a)
{
    char snum[20];
    //printf( "%s, %lun", __func__, a );

    int i=0;
    do
    {
        // 48 is numeric character 0
        snum[i++] = (char)((a%10)+(size_t)48);
        a=a/10;
    }while(a>0);

    i=i-1; // correction for overincrement from prior 'while' loop

    while(i>=0)
    {
        putchar_unlocked(snum[i--]);
    }
    putchar_unlocked('n');
} // end function: fastWrite


0

user3629249
15 Фев 2017 в 11:03

Я изменил ваш код, как указано ниже, который, кажется, работает нормально:

#include <stdio.h>

long long int calculateSquare(long n , long m , long a){
  long length=0;
  long width = 0;
  if(n%a != 0){
    length = (n/a)+1 ;
  }
  else{
    length = n/a ;
  }
  if(m%a != 0){
    width = (m/a)+1 ;
  }
  else{
    width = m/a ;
  }
  long long store = length*widthl
  return store;
}

int main(){
  long int n,m,a ;
  scanf("%ld %ld %ld", &n, &m, &a);
  long int output = calculateSquare(n,m,a);
  printf("%ldn", output);
  return 0;
}


0

Jarvis
15 Фев 2017 в 01:54

Я пытаюсь решить эту проблему:
http://codeforces.com/contest/664/problem/B
Вот мой код: http://ideone.com/fWgQEn
Я получаю Runtime Error на тестовом примере 5, хотя мой ответ правильный, и я печатаю его правильно.
Может ли кто-нибудь сказать мне, что может быть причиной этого?

#include<bits/stdc++.h>

using namespace std;

int main(){
int i = 0, pos = 1, neg = 0, n;
string str;
char x;
while(1){
cin >> x;
if(x == '=') break;
else if (x == '?') continue;
else if (x == '+') pos++;
else if (x == '-') neg++;
str[i++] = x;
}
str[i] = '';
// cout << str[0] << str[1] << str.size() << endl;
cin >> n;

if (!(pos * n - neg >= n && pos - neg * n <= n))
cout << "Impossible" << endl;

else{
cout << "Possiblen";
int neg_sum, pos_sum;
for (int i = neg; i <= neg * n; i++){
pos_sum = n + i;
if(pos_sum <= pos * n && pos_sum >= pos) {
neg_sum = i; pos_sum = n + i;
break;
}
}
// cout << str.size() << endl;
// cout << pos_sum << " " << neg_sum << endl;
int pos_count = 1, neg_count = 0;
for(int i = -1 ; i < pos + neg - 1; i++){
// cout << "i " << i << " " << str[i] <<endl;
if(!(i + 1)){
if(pos == 1) cout << pos_sum << " ";
else cout << pos_sum / (pos - 1) << " ";
}

else{
if(str[i] == '+'){
if(pos_count++ != pos -1) cout << "+ "<< pos_sum / (pos - 1) << " ";
else cout << "+ "<< pos_sum % (pos - 1) << " ";
}
else{
if(neg == 1) cout << "- " << neg_sum << " ";
else if(neg_count++ != neg -1) cout << "- "<< neg_sum / (neg - 1) << " ";
else cout << "+ "<< neg_sum % (neg - 1) << " ";
}
}
}
cout << "= " << n;
}
return 0;
}

TIA !!

Я пытаюсь решить эту проблему:
http://codeforces.com/contest/664/problem/B
Вот мой код: http://ideone.com/fWgQEn
Я получаю Runtime Error на тестовом примере 5, хотя мой ответ правильный, и я печатаю его правильно.
Может ли кто-нибудь сказать мне, что может быть причиной этого?

#include<bits/stdc++.h>

using namespace std;

int main(){
int i = 0, pos = 1, neg = 0, n;
string str;
char x;
while(1){
cin >> x;
if(x == '=') break;
else if (x == '?') continue;
else if (x == '+') pos++;
else if (x == '-') neg++;
str[i++] = x;
}
str[i] = '';
// cout << str[0] << str[1] << str.size() << endl;
cin >> n;

if (!(pos * n - neg >= n && pos - neg * n <= n))
cout << "Impossible" << endl;

else{
cout << "Possiblen";
int neg_sum, pos_sum;
for (int i = neg; i <= neg * n; i++){
pos_sum = n + i;
if(pos_sum <= pos * n && pos_sum >= pos) {
neg_sum = i; pos_sum = n + i;
break;
}
}
// cout << str.size() << endl;
// cout << pos_sum << " " << neg_sum << endl;
int pos_count = 1, neg_count = 0;
for(int i = -1 ; i < pos + neg - 1; i++){
// cout << "i " << i << " " << str[i] <<endl;
if(!(i + 1)){
if(pos == 1) cout << pos_sum << " ";
else cout << pos_sum / (pos - 1) << " ";
}

else{
if(str[i] == '+'){
if(pos_count++ != pos -1) cout << "+ "<< pos_sum / (pos - 1) << " ";
else cout << "+ "<< pos_sum % (pos - 1) << " ";
}
else{
if(neg == 1) cout << "- " << neg_sum << " ";
else if(neg_count++ != neg -1) cout << "- "<< neg_sum / (neg - 1) << " ";
else cout << "+ "<< neg_sum % (neg - 1) << " ";
}
}
}
cout << "= " << n;
}
return 0;
}

TIA !!

0 / 0 / 0

Регистрация: 23.06.2018

Сообщений: 2

1

23.06.2018, 15:20. Показов 1935. Ответов 2


(p.s. что за тупая система тут: написал пост , не зная, что слово «проблема» в заголовке запрещена — пост стерся. Кайф )
Пытался решить задачу на codeforces(ниже ссылка), получил runtime error на 17 тесте . Обычно легко нахожу ошибки, но тут я даже не предполагаю в чем она может быть. Буду рад , если укажите на ошибку.

Задача : http://codeforces.com/contest/999/problem/D.

Решение : http://codeforces.com/contest/… n/39527583.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Ромаха

353 / 134 / 28

Регистрация: 16.12.2012

Сообщений: 607

Записей в блоге: 1

23.06.2018, 16:56

2

Лучший ответ Сообщение было отмечено 4512Zor как решение

Решение

C++
1
2
if (c[*po]==p) s.erase(*po);
if (cur==0) cur+=abs(*po - a[i] % m);

Меняешь местами. Ликуешь.



1



0 / 0 / 0

Регистрация: 23.06.2018

Сообщений: 2

23.06.2018, 17:43

 [ТС]

3

Да уж… Серьезно тупанул. Большое спасибо!!



0



Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста начатьпомещениефайла
  • Ошибка при воспроизведении вк на телефоне музыки
  • Ошибка предоставления общего доступа к папке
  • Ошибка при вызове метода контекста начатьзапись
  • Ошибка при воспроизведении wink на приставке