Что значат вердикты WA, TLE, RE — почему «неправильный ответ» и «превышено время»?
Отправил решение в систему, а оно мне вместо «принято» пишет какие-то WA, TLE, RE на тестах. Я в панике, код вроде работает у меня локально. Что значат эти вердикты и как понять, что чинить?
2 ответа
Спокойно, это нормальная часть процесса, у всех так. Разберём основные вердикты:
- OK / Accepted (AC) — ура, всё тесты пройдены, задача решена.
- WA (Wrong Answer) — неправильный ответ. Программа отработала, но выдала не то. Значит ошибка в логике/алгоритме или ты не учёл какой-то случай (например, отрицательные числа, ноль, пустой ввод).
- TLE (Time Limit Exceeded) — превышено время. Программа работает правильно, но слишком медленно для лимита. Обычно это значит, что нужен более быстрый алгоритм (например, перебор за O(n²) не лезет, нужен O(n log n)).
- RE (Runtime Error) — ошибка во время выполнения. Программа упала: выход за границы массива, деление на ноль, слишком глубокая рекурсия.
- MLE (Memory Limit Exceeded) — превышена память. Ты хранишь слишком много данных.
- CE (Compilation Error) — код не скомпилировался, опечатка/синтаксис.
Как чинить: смотри, на каком тесте упало. WA на первом тесте — скорее всего неверный формат вывода или базовая ошибка. WA/TLE на дальних тестах — алгоритм не тянет крайние/большие случаи.
Лайфхак по борьбе с WA: придумай крайние случаи руками. Что если на входе ноль элементов? одно число? все числа одинаковые? самые большие из допустимых по условию? Очень часто решение валится именно на границах. А с TLE первым делом прикинь сложность своего алгоритма и сравни с ограничениями из условия: если n до 10⁵, а у тебя два вложенных цикла (это ~10¹⁰ операций) — всё, надо думать быстрее.