Programação Competitiva

Autor: Neilor Tonin – beecrowd

(6 minutos de leitura)


O ser humano é competitivo por natureza. Fala-se que a competição está em nosso DNA desde os tempos das cavernas (competição por alimentos) e que faz parte da nossa sobrevivência e evolução. 

É muito comum pararmos para acompanhar competições das Olimpíadas e a Copa do Mundo. São as competições mais difundidas e conhecidas. Mas existem outros tipos de competições, que não envolvem o esforço físico e não necessariamente os competidores dependem de sua condição física. Nestas competições, o item indispensável é o poder de raciocínio. Podemos citar dentre estas, as olimpíadas de ensino médio (matemática, química informática) e as de nível superior (Maratona de programação para quem estuda Ciência da Computação e cursos similares).

Estes eventos são caracterizados pela programação competitiva, ou seja, a programação em um ambiente de competição, na qual vence o time que resolver a maior quantidade de problemas em um tempo pré-determinado, de acordo com as especificações fornecidas, fazendo o uso da programação. Em caso de empates, vence o time que resolveu a mesma quantidade de problemas em menos tempo.

Aliás, por falar em programação competitiva, estamos próximos da data da grande final da XXVI Maratona de Programação. É uma competição em que, em março deste ano, reunirá os 60 melhores times do Brasil (compostos por 3 competidores cada) que passaram da primeira fase (cerca de 800 times de inúmeras universidades). Esta competição será em Gramado, RS e o mesmo evento ocorrerá simultaneamente em diversos países da América Latina. Os melhores qualificados ganham como recompensa a possibilidade de participarem da final Mundial do evento. Para quem é estudante de Computação, não há com certeza outro evento de maior importância e com tanta riqueza de aprendizado, pois além da qualificação pessoal, fica na bagagem a experiência de uma viagem inesquecível.

Uma dica interessante é que os estudantes que optam por participarem destas competições normalmente são os mais disputados pelas empresas de TI, pois a programação competitiva os estimula a buscarem conhecimentos complementares para resolverem os problemas e possibilita a experiência de trabalharem em grupo sob pressão. Assim como os atletas têm que exercitar e buscar condicionamento físico, podemos ver estas competições como uma forma dos acadêmicos exercitarem o cérebro e se prepararem melhor para o mercado de trabalho, conseguindo enxergar soluções não triviais e formas diferentes de abordar e resolver um determinado problema quando estão em uma situação real dentro de uma empresa.

O portal da beecrowd tem mais de dois mil e trezentos problemas típicos de competições de programação, em formato muito similar aos problemas disponibilizados na Olimpíada Brasileira de Informática (OBI) e Maratona de Programação. Aliás, para quem quer se preparar, todos os problemas das edições anteriores da OBI e da Maratona de Programação (Fase eliminatória e Fase final) estão disponíveis no portal. Também estão disponíveis muitos problemas de competições regionais (como por exemplo a Maratona Mineira) e das escolas de Inverno e de Verão da Maratona (eventos preparatórios para as equipes competidoras). Estes problemas são excelentes para que programadores se desenvolvam ainda mais em algoritmos e aprimorem suas técnicas de programação.

Neste ano, a beecrowd será patrocinadora oficial da final da Maratona de Programação (eliminatória latino-americana para a final mundial) e usualmente fazemos um espelho da competição na mesma data da prova oficial. Isso significa que, se seu time ficou de fora da fase final, poderá tentar resolver os mesmos problemas que as equipes classificadas resolverão em Gramado. A prova no portal (beecrowd) deve iniciar algumas horas depois que a prova oficial. Assim que a competição estiver disponível no portal, bastará acessar https://beecrowd.io/, se cadastrar, logar e acessar a aba de CONTESTS para encontrar a prova. Avisaremos quando tudo estiver pronto para você se inscrever!

Para finalizar, apenas para conhecimento dos detalhes de uma competição. A prova dura 5 horas (tanto da primeira fase quanto da final). Normalmente são disponibilizados para as equipes de 8 a 13 problemas de assuntos e complexidades variados (as finais normalmente misturam alguns assuntos em determinadas questões além de exigir um excelente raciocínio lógico). Estes problemas vão desde problemas bem simples e que normalmente as melhores equipes gastam poucos minutos para resolverem até problemas bem complexos, os quais poucas equipes na América Latina conseguem resolver. 

Para ilustrar um pouco e explicar alguns detalhes, segue o placar de uma competição. 

Esta foi uma competição individual e pode-se perceber que a competição está encerrada (tempo 00:00 para resolver). Foram ao todo 13 problemas, mas que o competidor que venceu resolveu 9 deles. O quadrado em cinza indica o competidor que foi o primeiro de todos a submeter uma solução correta para o problema (por exemplo, o problema C para o competidor 2). Também o número no círculo indica a quantidade de vezes que o competidor submeteu uma determinada solução até acertar o problema (o competidor 1 submeteu 4 vezes o problema B e 1 vez o problema A, por exemplo). 

Interessante também é que cada submissão errada acrescenta uma penalidade no tempo total de resolução e, o número abaixo do problema, indica em qual tempo da prova o competidor conseguiu acertar. Por exemplo, o competidor 3 resolveu o problema A no minuto 112 da prova, ou seja, pouco antes de fechar 2 horas desde o início dela. Esses tempos são critério de desempate. Por exemplo, embora o segundo e terceiro colocado tenham resolvido 8 problemas, o segundo colocado resolveu em um tempo bem menor. Problemas com a coloração branca indicam que o competidor não conseguiu acertar. Por exemplo, o primeiro competidor submeteu 10 vezes o problema I sem sucesso. De qualquer forma, este tempo não é contabilizado (quando o competidor não acerta o problema).

Segue abaixo também uma foto de uma Final Nacional da Maratona de Programação. Esta imagem é da Final Nacional de 2012, e aconteceu em Londrina, PR. Cada balão indica um problema resolvido pela equipe.

Acompanhem nosso blog e redes sociais para mais informações sobre a final da Maratona de Programação desse ano. 


Gostou do nosso conteúdo? Então siga-nos nas redes sociais para ficar por dentro de mais informações e acompanhe o nosso blog.

Autor: Neilor Tonin é Chief Academic Officer na beecrowd. É também professor e coordenador responsável pelas áreas de Engenharia da Computação e Ciência da Computação em uma grande universidade Brasileira. Neilor é membro ativo do comitê responsável pela organização da Olimpíada Brasileira de Informática (OBI), etapa brasileira da Olimpíada Internacional de Informática (IOI).

Compartilhe este artigo em suas redes sociais:
Avalie este artigo:

Outros artigos que você pode ter interesse em ler

  • Todos (184)
  • Bem estar (18)
  • Carreira (38)
  • Competições (6)
  • Desenvolvimento (112)
  • Design (8)
  • Diversidade e Inclusão (3)
  • Eventos (3)
  • História (15)
  • Indústrias (6)
  • Inovação (37)
  • Liderança (8)
  • Projetos (23)
Você gostaria de ter um artigo ou vídeo seu publicado no blog e redes sociais da beecrowd? Caso tenha interesse, envie-nos um e-mail com o assunto “BLOG” para [email protected] e passaremos mais detalhes sobre o processo e pré-requisitos para ter o seu artigo/vídeo publicado em nossos canais

Sede
Rua Funchal, 538
Cj. 24
Vila Olímpia
04551-060
São Paulo, SP
Brasil

© 2023 beecrowd

Todos os Direitos Reservados