Всем привет.
На днях уже всплыли две темы, в которых говорилось о том, что на кф что-то считается неправильно.
Сначала был пост от NikitaMikhaylov о том, что кф неправильно считает количество символов, когда пытаешься отправить решение (там дело то ли в переводах строк, которые почему-то не учитываются, то ли в пробелах, так толком и не выяснилось).
Затем был пост от MikeMirzayanov, приспустивший с небес рейтинг tourist.
Так вот, я это к чему.
Есть задача 660D - Number of Parallelograms с Educational Codeforces Round 11. Ограничение по памяти у неё 256 мегабайт.
И есть моё решение 17255435, которое ест 263936 КБ.
Переведём в мегабайты, получим 263936 / 1024 = 257.75 мегабайт.
Итак, вопрос: что я делаю не так?
Это норм, java дарят еще сколько-то там памяти, чтобы java машину поднять и т.п.
Тогда надо прописывать в условии задачи отдельные ограничения ML на Java, а не заниматься подъемом ML по-тихому. Где прописано, что на Java дают ещё доп. память? Укажите пост, пожалуйста.
На codeforces я такого поста не видел. Прост я знаю, что так делают на других тестирующих системах: на саратовском четвертьфинале (говорил на открытии MikeMirzayanov, но это не codeforces), на самарской тестирующей системе (у них где-то пост есть).
Офигительный баг, действительно, ведь должен был быть ML... Устаешь от этих постоянных багов вокруг...
Лучше ошибка в эту сторону (прошло решение, использующее на пару мегабайт больше), чем в другую (не прошло решение, использующее на пару мегабайт меньше).
Обычно цель авторов — проверить ограничение по памяти для решения, а не для конкретного языка.
Если поправку на язык не делать — идея решения, использующая 250 мегабайт при реализации на C++, может потребовать больше 256 мегабайт при аналогичной реализации на Java. Несколько лет назад на Codeforces так и было — любое решение на Java использовало не менее 40 мегабайт памяти.