В прошлом году мы провели первый открытый зеленоградский турнир по программированию. Так как это был первый турнир, мы столкнулись с некоторыми проблемами при его организации. Сама система SPOJ ещё была не отлажена, и мы совместно с администраторами сферы решали некоторые проблемы. В некоторых моментах мы решили отойти от традиционных правил ACM соревнований. А именно усложнить задачи и при этом растянуть соревнование на длительное время. Получилась некоторая смесь DASM лиги и заочных соревнований от olympiads.ru.
В процессе подготовки соревнований мы добавили несколько нестандартных задач, так называемых challenge задач, каждая из которых имеет множество верных решений. Качество решения оценивается с помощью специальной Judge-программы, которая начисляет присланной программе некоторое количество очков. По отзывам участников соревнований мы выяснили, что именно такие задачи вызывают наибольший интерес, т.к. подходят как новичкам так и профи программирования. Другое дело, что простенькие алгоритмы получают существенно меньше очков, чем продвинутые.
Соревнование получилось необыкновенно динамичным, т.к. борьба за первые три места продолжалась до последних секунд турнира. Не последнее место в этом сыграла наша система рейтингов. Вы, решая задачи, влияете не только на свою позицию в общем рейтинге, но также косвенно воздействуете на рейтинг других участников. В задачах типа challenge максимальное число баллов за данную задачу получает участник, заработавший максимальное число очков за решение. Остальные же получают только часть максимума пропорционально эффективности их решения к эффективности решения победителя. Следовательно, чем более эффективное решение придумывает победитель, тем меньшее число очков за эту задачу получают все остальные.
В классических задачах количество очков определялось линейно в зависимости от позиции решения в ранклисте задачи. Чем выше, т.е. чем быстрее ваш алгоритм, тем выше Вы были в таблице и тем больше очков вы получали. Соответственно одно эффективное решение могло сдвинуть всех остальных ниже по ранклисту и соответственно уменьшить количество очков каждого из участников.
К сожалению, такая система начисления очков не лишена недостатков, и мы в какой-то момент столкнулись с читерством. Некоторые участники для ускорения своих программ и как следствие получения большего количества очков использовали подбор ответов для секретных тестовых последовательностей. Это можно было проделать на некоторых задачах с небольшими тестовыми данными. На рейтинг это влияло не так уж сильно, поэтому мы закрывали на это глаза.
Во втором турнире мы попытались учесть опыт, полученный в первом турнире. Мы учли пожелания насчет задач и теперь почти все они принадлежат типу challenge. Большинство задач подойдут как профессионалам, так и новичкам. Задачи в полной мере оригинальны, такого вы ещё не видели! =) Для борьбы с читерством мы используем новейшую фичу введенную в SPOJ. Тесты для каждой из задач одни и те же, но порядок их подачи на вход произвольный. Это исключает возможность подбора ответов и отсылки вместо полноценного решения задачи, её таблицы ответов.
В данный момент мы дорабатываем задачи, отшлифовываем тестовые последовательности и текст задач. Ориентировочно мы запустим «Второй открытый зеленоградский турнир 2006» в середине января. Приглашаем Вас принять в нем участие!