Публикую еще одну часть статьи.
Многие, в том числе тренер нашей команды Андрей Станкевич, считают, что на финале 2008 года мы «решали задачи так, как надо их решать». В этом разделе я постараюсь объяснить, почему у нас это получилось.
Главной причиной было то, что мы перед написанием каждой программы (кроме, возможно решений двух самых простых задач) достаточно долго обсуждали, как и что мы будем писать. В результате такого обсуждения у человека, который садился за компьютер, в голове уже было полностью сформировавшееся представление о программе.
В результате написание программы занимало гораздо меньше времени, а программа в итоге содержала гораздо меньше ошибок. Так, например, одна из задач, которая нам изначально казалась «технически сложной задачей на перебор, которую писать не меньше часа», после обсуждения стала «несложной задачей на двадцать минут». Из таблицы результатов финала видно, что такая тактика весьма успешна - мы сделали всего две неудачные попытки, одна из которых была по самой простой задаче (для которой не применялся описанный метод), а вторая - по достаточно сложной задаче, в которой было изначально отправлено на проверку недостаточно эффективное по времени решение.
Таким образом, процесс решения задачи состоял из следующих этапов:
1. Чтение условия и разработка идеи решения - как правило, выполняется одним человеком.
2. Доведение идеи решения «до ума» - выполняется одним или двумя людьми.
3. Обсуждение структуры программ, деталей реализации, и т.д. - выполняется двумя людьми.
4. Написание программы - в середине соревнование программы пишутся в одиночку, ближе к концу вдвоем.