Спортивное программирование — это соревнования, где программисты решают алгоритмические задачи при помощи кода. 1 Главная цель участников на большинстве мероприятий — решение задач в условиях ограниченного времени с минимальным количеством ошибок и неправильных попыток. 1
Как правило, участникам нужно решить 4–10 алгоритмических задач в течение пяти часов. 1
Некоторые распространённые направления задач:
- Графы. 1 Участники реализуют алгоритмы для работы с графами, включая, например, обходы в глубину и ширину, поиск кратчайшего пути и т. п.. 1
- Структуры данных. 1 Нужно, например, манипулировать расположением элементов массива, расположив их в обратном порядке, или же найти mix/max значение в определённом диапазоне массива с применением дерева отрезков. 1
- Теория чисел. 1 Использование алгоритмов для решения математических задач, включая нахождение наиболее общего делителя, простых чисел и т. п.. 1
- Динамическое программирование. 1 В этом случае участникам предлагают решить оптимизационную задачу. 1 Требуется разбивать основное задание на подзадачи и использовать результаты их решения для решения основной. 1
Существуют как локальные конкурсы, например, мини-турниры на платформах Codeforces, TopCoder или Codechef, так и крупные международные чемпионаты и олимпиады, в которых участвуют десятки тысяч программистов. 5