Всем доброго времени суток.
Сегодня на Codeforces необычный день: сразу два раунда, днем, да еще со столь небольшим перерывом. А объясняется это тем, что сегодня в Саратове проходит IX Региональная командная олимпиада школьников по программированию, и задачи с нее (а они весьма неплохие) решено было дать на раунды Codeforces.
По этой причине авторов у сегодняшних задач много. Не поленюсь перечислить весь состав жюри олимпиады, все члены которого хорошо знакомы вам как авторы задач на Codeforces. Это Артем Рахов, Николай Кузнецов, Наталья Бондаренко, Геральд Агапов,Полина Бондаренко, Иван Фефер, Эдвард Давтян, Игорь Кудряшов, Павел Холкин и я. Все мы отлично потрудились и надеемся, что вы оцените наши задачи.
Отдельное спасибо стоит сказать Марии Беловой и Юлии Сатушиной за перевод задач на английский язык.
Обращаю ваше внимание на то, что сегодня во всех задачах будет файловый ввод-вывод. Однако генератор для взлома, как обычно, должен выводить в stdout.
Желаю всем удачи на контестах!
UPD: Результаты 35-го раунда. Поздравляем победителя, участника с ником Naginchik, с впечатляющим дебютом!
UPD: Результаты 36-го раунда.
Высокого рейта!
So, for exaple, in C++ you should have something like
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
at the beginning of your solution.
And usually you should not.
For those who are not familiar with file IO, there are several solutions of "A*B" problem in some popular programming languages:
+1 к красному капсу. Лучше даже инпут и аутпут красным выделять.
дальше это та же самая задача.
В условии сказано: "1 <= r < R <= 10000".
Такого теста не может быть.
Мне кажется, что нужно рассмотреть каждую пару тарелок (нижняя, верхняя).
Разобрать три случая для дна верхней тарелки (оно < r нижней, > R нижней и в промежутке).
Разобрать два случая для верха верхней тарелки (как вторая тарелка во втором примере и как третья тарелка во втором примере).
Взять по всем случаям всех нижних тарелок максимум позиции, и это будет позиция верхней тарелки.
Поскольку край тарелки - отрезок прямой, условия можно проверять только на концах отрезков.
Все ли случаи тут учтены?
Да, я тоже эту задачу про тарелки где-то уже решал.
(не помогло правда =) )
Что означает вердикт по challenge'у
"Неизвестный вердикт:OTHER"?
Вот это да!
До этого даже не предполагал, сколько можно "наломать", причем используя мега-элементарный тест. Оказывается, что ну очень многие забывают проверить задачу не только на максимальном тесте, но и на минимальном.
Сначала смотрим сколько компонент связности.
Если больше 2, то очевидно "-1"
Если равно 2, то в каждой компоненте связности нужно построить либо Эйлеров цикл, либо Эйлеров путь. Если хоть в одной компоненте не получается "-1"
Если 1 компонента связности. Смотрим кол-во вершин с нечетными степенями.
Если 0 вершин, то находим Эйлеров Цикл. А его не сложно разбить на два пути
Если 2 вершины, то находим Эйлеров путь. И его тоже не сложно разбить на два пути.
Если 4 вершины, то можно добавить вспомогательное ребро соединяющее две нечетные вершины. Найти Эйлеров путь и удалить вспомогательное ребро и получится два пути.
Иначе "-1"
B:
Рассмотрим точку (x,y) ответа.
Если для какого-то c=n^d где 0<=d<k точка ((x/с)%n,(y/c)%n) шаблона черная, то и (x,y) - черная.
За O(N*N*K) задача сдается тремя вложенными циклами.
В задаче D почти все валились на очень простом тесте:
1 1
3 3
Дело в том, что общая закономерность не выполняется в этой задаче для K = 1
Было очень забавно допустить одну и ту же ошибку в задачах 35D и 35E: использование set вместо multiset :)
У меня слетела задача, которую я написал за 30 мин, и часа мне не хватило, чтобы найти ошибку..
Очень хотелось бы узнать в чем дело..