matheusazevedo's blog

By matheusazevedo, history, 8 months ago, In English

Nessa sexta (26/04), participamos da nossa primeira competição fora de casa: a Stairway to Deven, da UFSC. Foi um evento caótico, mas nos saímos bem – ainda que tenhamos perdido uma questão por não saber imprimir um float com dois pontos de precisão usando cout (emoji de caveirinha).

Nesse dia, Jota nos surpreendeu com um presente incrível: bottons com nossa logo, um Lambda com marca de batom. Atrás de nós, a faixa anunciando a greve dos servidores Técnico-administrativos em Educação (TAEs).

Era uma competição de calouros e, para isso, a UDESC mandou quatro times que competiram além dos veteranos do Brute que foram nos dar apoio (e carona de volta para a universidade).

O evento em si foi um caos completo, começando pelo local e hora da prova: nas escadas do hall da UFSC ao meio-dia. Sim, o local da prova era uma escadaria e ela aconteceu em um momento de alta circulação de estudantes. Além disso, organização do evento disponibilizou apenas uma cadeira para cada equipe de três pessoas, mas esclareceu que “os demais participantes podem sentar nas escadas ou ficar por aí para discutir as soluções”. Achei inusitado. Para completar, se não bastasse estarmos em um local barulhento e movimentado, a prova ainda envolvia uma banda tocando ao vivo, um verdadeiro teste de foco e concentração.

Quanto às questões, eram cinco, das quais duas estavam erradas.

A) Dados dois números, c e n, perguntava o que era maior, c^n ou n!. Como c e n poderiam ser números até 10^9, não é possível calcular c^n e n! para comparar os resultados. Sabendo disso, eu inferi que deveria haver alguma regra que poderia ser usada para identificar qual era maior sem ter que fazer as contas. Então comecei a jogar números na calculadora para ver se encontrava algum padrão. Cheguei na hipótese de que se n > 2c, n! > c^n. Codei essa solução e fomos a única equipe a passar essa questão. Aparentemente, esse meu processo de jogar números na calculadora até chegar num padrão foi o que quem criou o problema fez porque nós dois chegamos na mesma solução errada. Como bem notado pelo emoreira, existem casos em que essa regra falha. Um exemplo que ele encontrou é para c = 10 e n = 22. Nesse caso, n é maior que 2c, mas c^n > n!.

B) Provavelmente a mais difícil da prova. Eu acho que conseguiríamos resolvê-la, mas não tivemos tempo nem de começar a tentar.

C) A segunda mais fácil da prova, envolvia descobrir a área de um círculo circunscrito em um quadrado. Assim que lemos o enunciado, o Jota ficou encarregado de fazer as contas para chegar na resposta enquanto o Rian e eu tentávamos, cada um de um jeito, encontrar a solução para o problema A. Quando o Jota acabou as contas, exclamou “Não faz sentido, a área do círculo tá dando maior do que a área do quadrado!”. Ele estava usando a fórmula do comprimento da circunferência para calcular a área do círculo… Depois de perceber o engano e usar a fórmula certa, escrevemos o código com a solução que ele encontrou faltando 6 segundos para o fim da prova. Mas ainda tínhamos um problema: nós não sabíamos como imprimir um float com duas casas de precisão usando cout (o que era exigido pela questão)… Trocamos o cout por printf, mas era tarde demais. Fizemos a questão, chegamos na solução correta, mas não conseguimos enviar o código. Isso nos custou, no mínimo, o terceiro lugar. Acabamos em sexto.

D) Era a mais fácil, basicamente, bastava contar quantas vezes uma letra aparecia em uma string. Quase todo mundo fez essa.

E) Essa questão foi anulada assim que o contest começou pois ela estava com problema.

Ou seja, duas das cinco questões da prova estavam erradas. A cereja do bolo é que a prova foi realizada no beecrowd (fato que provavelmente fala por si mesmo). Essas duas coisas, juntas, somaram ao clima caótico do dia.

Na foto, eu, jogando números na calculadora tentando encontrar um padrão para a questão A, Rian, tentando lembrar como fazia fatorial recursivo e Jota, focado usando a fórmula da circunferência para encontrar a área do círculo.

Cometemos alguns erros, é verdade, acho que poderíamos ter conseguido uma colocação melhor. Mas eu estou muito contente com o nosso resultado e, principalmente, com a forma como nós nos dividimos para fazer as tarefas. No blog anterior, eu contei sobre um desempenho ruim que tínhamos tido em função de, o que concluí como, falta de organização. Nós conversamos sobre isso e nos propusemos a experimentar fazer essa prova de um jeito diferente e funcionou! Saí bastante satisfeito – ainda que um pouco frustrado por não ter tido tempo de enviar aquela última questão.

Na foto, as equipes “Tu computas” e “Programação Funcional e Beijo na Boca”.

Quando ficamos sabendo que não haveriam cadeiras para todo mundo e que a prova aconteceria numa escadaria, o Rian quis desistir de ir para ficar na UDESC e participar de forma online, mas eu insisti para que fossemos mesmo assim – e acho que foi uma boa. Eu penso mesmo que tudo passa muito rápido, o que fica (quando fica) são as memórias. E é por isso que escrevo esse blog, porque sei que em alguns, breves, anos mesmo os acontecimentos mais ordinários terão se forjado em preciosos vislumbres de uma outra vida. Em pouquíssimo tempo, as fotos de ontem serão portadoras de uma entorpecente nostalgia. Penso que passar perrengue por uma hora é um preço pequeno a pagar para poder contar a história da vez em que participamos de um contest na escada.

Agradeço a companhia dos amigos, fui muito feliz no caos da escadaria do hall da UFSC.

Full text and comments »

  • Vote: I like it
  • +30
  • Vote: I do not like it

By matheusazevedo, history, 8 months ago, In English

Depois de um resultado triunfante na semana passada, o contest de ontem (23/04) veio como um choque de realidade: resolvemos apenas um dos sete problemas.

Não sei o que aconteceu. Até chegamos a codar a resposta para outros três problemas – e acredito que tenhamos chegado na solução adequada para cada um deles –, mas falhamos em fazer esses códigos funcionarem.

Estávamos desorganizados. Nos equivocamos na interpretação das questões. Perdemos muito tempo com erros básicos de lógica. Para dar um exemplo, houve um momento em que eu escrevi o código para uma questão que eu não tinha nem lido, apenas com base no que o Jota tinha me explicado, só para chegar na hora de rodar o programa e descobrir que o que tínhamos feito não era o que havia sido pedido. Em outra ocasião, me vi ditando o código de um problema para o Rian escrever. É óbvio que isso é ruim e ineficiente. É fácil perceber esse fato retroativamente, mas, na hora, no calor do momento – calor literal porque a sala não tinha ar condicionado e o suor escorria pela minha nuca –, é difícil perceber e, principalmente, corrigir essas coisas.

Em conclusão, nos faltou coordenação, organização e um método adequado de leitura das questões. Felizmente, quanto a esse último item, parece que a questão F, Otimizando Leitura, oferece uma luz – aplicaremos a estratégia nela descrita na próxima vez.

Apesar de todos os pesares, fico feliz. Continua sendo uma experiência positiva. Afinal, é pra isso que essas competições servem, para que a gente possa treinar as habilidades que nos faltam. E, com sorte, vou ficando menos ansioso a cada competição.

Não adianta lamentar. Agora o que resta é fazer o upsolve das questões durante a semana porque sexta-feira tem mais!

PS: Para completar a tempestade de infortúnios, o CF ainda ficou fora do ar por mais de uma hora durante a prova, então não podíamos testar os códigos...

Full text and comments »

  • Vote: I like it
  • +7
  • Vote: I do not like it

By matheusazevedo, history, 8 months ago, In English

Em 15 de abril de 2024, Jota, Rian e eu criamos nosso primeiro time de programação competitiva: o Programação Funcional e Beijo na Boca. A ideia de formar um time já existia desde o semestre passado, quando ingressamos no curso de Ciência da Computação na UDESC e começamos a participar da Brute Class, aulas de programação competitiva para calouros (acho que nenhum de nós nunca tinha nem ouvido falar de programação competitiva antes disso, mas só posso afirmar por mim), porém ainda não havia tomado forma.

No dia seguinte, tivemos nossa primeira prova: Maratonando — day 3. Conseguimos resolver 4 das 7 questões durante as, pouco menos de, duas horas de prova. Isso nos rendeu a quinta posição no geral e a primeira colocação entre os calouros.

Acho que podíamos ainda ter resolvido as questões F (que era até mais fácil do que outras que fizemos) e D (que o Jota, corretamente, identificou como sendo uma busca binária), mas não deu tempo. O tempo que faltou para fazer a F foi perdido com a C: chegamos na solução dela rapidamente, mas criamos um array com tamanho errado e levamos – o que pareceram – séculos para encontrar o problema.

Fiquei muito feliz com o nosso resultado. Eu não conseguia parar de sorrir ao fim do contest. Eu já havia participado, sozinho, de outras provas parecidas nas semanas anteriores (Maratonando day 1 e day 2), mas estar com amigos é completamente diferente, é muito melhor. A felicidade só é real quando é compartilhada.

Agradeço muito a todos do Brute e aos meus amigos jota_zacheo e Rian2601. Esse é só o começo!

(Primeira fanart que recebemos: Jota fazendo a parte da programação funcional, Rian e eu fazendo a parte do beijo na boca)

Full text and comments »

  • Vote: I like it
  • +51
  • Vote: I do not like it