A Maratona de Programação é um evento anual promovido nacionalmente pela Sociedade Brasileira de Computação (SBC) como seletiva para a International Collegiate Programming Challenge, evento internacional promovido pela Association for Computing Machinery (ACM). Nestes eventos, times competem para solucionar problemas utilizando programação de computadores.
Cada time é composto de três estudantes de graduação ou pós-graduação que dividem a utilização de um único computador para solucionar os problemas propostos na competição. Os times devem solucionar o maior número de problemas no menor tempo possível e com o menor número de erros.
Os problemas exigem soluções criativas, demandando raciocínio lógico e conhecimentos em diversas áreas relativas a programação de computadores, tais como linguagens de programação, estruturas de dados, análise de complexidade de algoritmos, bem como conhecimentos gerais de matemática. As linguagens de programação tipicamente permitidas durante estas competições são C, C++, Java e Pascal. Para cada problema proposto, o time deve submeter uma solução na forma de código em uma das linguagens permitidas. Os juízes então julgarão o código, verificando se ele de fato soluciona o problema. Se o código mostrar-se correto, ao time é creditada a solução do problema; caso contrário, o time é penalizado, perdendo pontos, mas podendo fazer nova submissão para o mesmo problema.
O time vencedor é aquele que soluciona o maior número de problemas. Havendo mais de um time com o mesmo número de problemas resolvidos, a vitória é dada aquele time que apresentou as soluções no menor tempo e que teve o menor número de penalizações.
Mais informações: