Maratona de Programação

Isso é normal de acontecer. Os moderadores geralmente colocam quem mais postou a notícia. Podem ter equecido agora.

Quem quiser ir nessa maratona e tá em dúvida, eu digo: pegue o Algorithms do Cormen, um guia de C++ e vá sem pensar 2x. Não só na ICPC, mas na OBI, Spoj, TopCoder, Google Code Jam.

Essa coisa de idade não tem muito a ver. É uma condição OU outra. Um colega participou em meu time e ele tem 28 (isso a uns 2 anos).

[quote=Andre Brito]Isso é normal de acontecer. Os moderadores geralmente colocam quem mais postou a notícia.

Quem quiser ir nessa maratona e tá em dúvida, eu digo: pegue o Algorithms do Cormen, um guia de C++ e vá sem pensar 2x. Não só na ICPC, mas na OBI, Spoj, TopCoder, Google Code Jam. [/quote]

Jovem,
Para mim isto não tem problema nenhum o meu intuito foi disseminar a informação e que a galera participe do evento que é muito bacana e isto foi feito. Só não concordo em publicar as minhas palavras como se fosse a dele.

Abs,

[quote=Kanin Dragon][quote=Andre Brito]Isso é normal de acontecer. Os moderadores geralmente colocam quem mais postou a notícia.

Quem quiser ir nessa maratona e tá em dúvida, eu digo: pegue o Algorithms do Cormen, um guia de C++ e vá sem pensar 2x. Não só na ICPC, mas na OBI, Spoj, TopCoder, Google Code Jam. [/quote]

Jovem,
Para mim isto não tem problema nenhum o meu intuito foi disseminar a informação e que a galera participe do evento que é muito bacana e isto foi feito. Só não concordo em publicar as minhas palavras como se fosse a dele.

Abs,[/quote]
A sim, mas acho que foi só um mau entendido… Ou não sei também né. Não quis tirar a sua razão, ainda mais sem saber o que você tinha escrito.

[quote=Andre Brito]

Essa coisa de idade não tem muito a ver. É uma condição OU outra. Um colega participou em meu time e ele tem 28 (isso a uns 2 anos).[/quote]

Como assim, não tem nada a ver, são regras e se não se encaixar não da mesmo…

Olá

[quote=Kanin Dragon]
Jovem,

Gostaria de saber o motivo pelo qual você publicou está noticia como fosse sua. Sendo que eu enviei a mesma ontem e estava aguardando a aprovação da moderação.
Isso não me afeta mas um tanto inseguro e desonesto, acredito nas regras do foruns e que deve servir para todos.

“Dê credito a quem é de crédito”
[color=red]
ISSO É PIOR DO QUE CENSURA É PLÁGIO.[/color][size=24] [/size]

sem mais[/quote]

Simples de explicar:

  1. O texto da sua notícia estava péssimo, infantil e pouco informativo.

  2. Continha um trecho de auto elogio que seria extremamente prejudicial a sua imagem e para preservá-lo, foi retirada qualquer referência a sua pessoa.

[]s
Luca

Jovem,

Qual o problema em dizer que vai disputar uma competição com intuito de ser o vencedor ?

Não vejo problema algum, apenas fazendo uma analogia ao esporte, nenhum atleta por mais limitado que seja entra em uma competição para perder e creio que todos do forum devem seguir este raciocinio.

Se os moderadores concordam ou não com o que escrevi não vejo problema nenhum. Aliais vocês tem um papel fundamental para manter a ordem e a qualidade do forum. Não concordo com a atitude exercicida por tais, creio que deveria ter sido notificado por MP antes de publicarem o tópico.

Abs,

[quote=Kanin Dragon]
Jovem,

Gostaria de saber o motivo pelo qual você publicou está noticia como fosse sua. Sendo que eu enviei a mesma ontem e estava aguardando a aprovação da moderação.
Isso não me afeta mas um tanto inseguro e desonesto, acredito nas regras do foruns e que deve servir para todos.

“Dê credito a quem é de crédito”
[color=red]
ISSO É PIOR DO QUE CENSURA É PLÁGIO.[/color][size=24] [/size]

sem mais[/quote]

Pelos fatos que o Luca apontou.

Foi um consenso da moderação reformular a noticia e posta-la, mas desculpe, realmente esqueci de mencionar que voce colocou uma noticia sobre o assunto para aprovação.

Problema nenhum, mas as noticias do GUJ não devem ter carater pessoal, leitores de fora da comunidade querem saber sobre a Maratona de Programação, não sobre seu intuito de ganha-la.

Mesmo por que qualquer participante só entra em uma competição se for para ganhar não acha?

@topic
Eu sou elegivel para participar e ainda estou na faculdade, só falta um time para isso. =/

[quote=Marky.Vasconcelos]

@topic
Eu sou elegivel para participar e ainda estou na faculdade, só falta um time para isso. =/[/quote]

Eu encararia uma olimpíada dessas mas já passei de ser elegível faz tem rsrsrsrs… Chegar lá com uns algoritmos de busca inteligentes na ponta do dedo te dá uma grande chance de boa pontuação.

[quote=Marky.Vasconcelos][quote=Kanin Dragon]
Jovem,

Gostaria de saber o motivo pelo qual você publicou está noticia como fosse sua. Sendo que eu enviei a mesma ontem e estava aguardando a aprovação da moderação.
Isso não me afeta mas um tanto inseguro e desonesto, acredito nas regras do foruns e que deve servir para todos.

“Dê credito a quem é de crédito”
[color=red]
ISSO É PIOR DO QUE CENSURA É PLÁGIO.[/color][size=24] [/size]

sem mais[/quote]

Pelos fatos que o Luca apontou.

Foi um consenso da moderação reformular a noticia e posta-la, mas desculpe, realmente esqueci de mencionar que voce colocou uma noticia sobre o assunto para aprovação.

Problema nenhum, mas as noticias do GUJ não devem ter carater pessoal, leitores de fora da comunidade querem saber sobre a Maratona de Programação, não sobre seu intuito de ganha-la.

Mesmo por que qualquer participante só entra em uma competição se for para ganhar não acha?

@topic
Eu sou elegivel para participar e ainda estou na faculdade, só falta um time para isso. =/[/quote]

Jovem,
Marky não vejo problema nenhum de vocês editarem ou recusarem os posts este é o papel do moderador como já citei anteriormente a importância do mesmo.
Só não concordei com a falta da notificação por MP com os motivos da não publicação do post.

Torço para você entrar em um time e seria bacana encontrar amigos do GUJ na competição.

abs,

[quote=Anime][quote=Andre Brito]

Essa coisa de idade não tem muito a ver. É uma condição OU outra. Um colega participou em meu time e ele tem 28 (isso a uns 2 anos).[/quote]

Como assim, não tem nada a ver, são regras e se não se encaixar não da mesmo…[/quote]
Como eu falei, é uma condição OU outra. Entrei em 2006 e participei em 2008 (sou de 1988 ). No meu time tinha mais um colega de 1983. Na época ele tava com 26 anos e pode participar de forma tranquila.

[Editado]
Pra quem tá pensando em ir e quer dar uma treinada, aí vão algumas dicas.

Sites com problemas de computação:

  • SPOJ (o brasileiro e o polonês): usa o sistema igual ao da maratona ACM ICPC (inclusive com problemas de maratonas). Outro fator interessante é que dá pra usar outras linguagens;
  • UVa: idem acima, mas acredito ter mais problemas;
  • Google Code Jam: todas as edições possuem moldes parecidos com o da maratona, mas não é necessário submeter o código, e sim pegar as entradas e colocar as saídas;
  • TopCoder: meu preferido. É um pouco diferente da maratona porque te dá um ambiente pra codar já. É só fazer um método com o retorno e mandar ver. Dá pra ver e desafiar código de outros programadores. Pode-se programar em C++, C# e Java. Tem um fórum ótimo pra discussão e um ranking com, possivelmente, alguns dos melhores competidores do mundo (no Google Code Jam quem ganhou algumas vezes com o ACRush, segundo colocado do Algorithms do TopCoder). Além de ter mais competições (Design, Studio, Marathon).

Livros:

  • Introduction to Algorithms, CLRS (o livrão branco de algoritmos);
  • Programming Challenges, Skiena & Revilla;
  • Algorithms in C, Sedgewick;
  • Concrete Mathematics, Knuth et al.

Quem quiser dar uma estudada BOA em matemática, manda ver. Tem muitos problemas que envolvem Teoria dos Números, Probabilidade e Geometria Computacional.

Mais alguns links interessantes:

Além desses eu tinha um caderno com os algoritmos que precisava em C++, mas não sei onde enfiei :oops: Era tipo um memorex com Dijkstra, BSF, GDC e mais alguns úteis. Quem procurar pelo caderno da PUC RJ possivelmente vai achar. Além desse tem um caderno de algoritmos de um competidor (Vinícius Fortuna) que está hoje no Google. Ele tem muitas dicas pra quem quere entrar no caminho.

Enfim, aí ficaram algumas dicas. O principal pra se dar bem nessas competições? Não tem fórmula mágica: resolver, resolver e resolver.

[Editado2]
Quem fica nas primeiras colocações nessas competições geralmente atinge um lugar ótimo pra se trabalhar. Vide aqui e aqui dois casos interessantes.

[Editado3]
Se atentem aos limites das entradas. Se o problema diz que vai entrar de 0 a 2³²¹²¹², vai acontecer de colocar o maior valor. Portanto, long long (C++) e BigInteger (Java) neles. Alguns casos até quem tem que implementar isso é você (principalmente quando existem números absurdos). Existem algoritmos prontos pra fazer isso, é só pegar, entender e implementar.

E se atentem BASTANTE à performance.

Tinha entendido, foi frescura minha… :stuck_out_tongue:

Eu participava do UVA (http://uva.onlinejudge.org/). Também é muito bom. :smiley:

O site está com um bug para acessar… às vezes não acessa, só quando remove os cookies… não testaram antes de submeter? kkk

Para a maratona, aconselho altamente usar C ou C++.
Java só para usar para problemas com BigDecimal, BigNumber, etc.
Na maratona, Java perde muito em relação à performance e memória, por conta da orientação a objetos. E nesse tipo de contest, vai ser muuuuito raro precisar usar uma instância de uma classe criada. Programação “procedural” dá conta do recado numa boa.

Já teve caso de quando participei fazer o programa em java, não passar (resposta errada), aí tentamos em C (o mesmo algoritmo) e passou.
Bem, em todo caso, não custa ir sabendo C/C++. Se não der certo com um, tenta com outro! :slight_smile:

Como era esse caso? Você ainda tem o algoritmo?

[]'s

Como era esse caso? Você ainda tem o algoritmo?

[]'s[/quote]

Não tenho mais. Mas foi na maratona de 2007. Era coisa bem simples, bem boba.
O código java ficou igualzinho ao do C, só mudou o public static void main para main do C.
Perdemos quase 15 minutos no problema na época, enquanto as outras equipes gastavam menos de 5 minutos.
Por isso recomendo saber as 2 linguagens para a maratona.

Pior são os casos que parecem que é de performance mas é de lógica… tivemos um desse uma vez e fizemos 5 versões do problema (Java, 2 em C++ e 2 e C)… no final descobrimos que tinha um situação que executava muito mais iterações e estourava o tempo.

Por esta e outras que deve-se estar atento aos resultados das submissões… nem sempre o erro que parece é o que realmente é.

Pessoal,

É uma boa oportunidade para quem quer testar seus conhecimentos na construção algorítmos
complexos para resolução de problemas difíceis.

Tive a oportunidade de participar nas regionais com o time de Ciência da Computação da FASP em 2003, na
época um time do IME/USP foi campeão da regional resolvendo os 5 problemas da competição porém a
Universidad de Buenos Aires foi a campeã da América do Sul e foi disputar o mundial no Hawaii. :smiley:

Para preparação recomendo o site da UVa com um banco de dados com problemas de competições passadas:
http://www.uvatoolkit.com/problemssolve.php

Um livro de Algoritmos:
Algoritimos - Teoria e Prática - Thomas H. Cormen

Site competições passadas:
http://icpc.baylor.edu/past/

eu participei da regional do ano passado…
quando participa pela primeira vez a gente peca muito por falta de experiência, mas é muito bom. Recomendo mesmo.
Nesse ano acho que vou entrar novamente.

Os problemas em sua grande maioria não geram códigos grandes, mas tem uma lógica meio complexa…sintaxe nunca é o problema, até pq pode levar livros ou algum material.
O que mais pega é vc fazer algo sem montar uma estratégia bem montada e no final ter de refazer tudo ou perder tempo revisando o que deu erro…

mas é bom mesmo… :smiley:

Como era esse caso? Você ainda tem o algoritmo?

[]'s[/quote]

Não tenho mais. Mas foi na maratona de 2007. Era coisa bem simples, bem boba.
O código java ficou igualzinho ao do C, só mudou o public static void main para main do C.
Perdemos quase 15 minutos no problema na época, enquanto as outras equipes gastavam menos de 5 minutos.
Por isso recomendo saber as 2 linguagens para a maratona.
[/quote]

Depende da métrica do servidor, mas te juro que até hoje não consigo entender isso. Se o algoritmo é o mesmo o servidor não pode recusar. E atenção que para algoritmos curtos o hotspot otimiza 3x mais que um programa c com otimizador no 2x.

Um exemplo simples é gerar séries harmônicas. Em um loop de 36 pontos o assembly java consegue resolver o problema em 300 ms, enquanto c resolveu em 530 s na minha máquina e c++ resolveu em 700(sem otimização ativada).

Então um código gerado com o hotspot tem mais vantagens em problemas pequenos devido as diversas otimizações.

[quote=Loiane]Para a maratona, aconselho altamente usar C ou C++.
Java só para usar para problemas com BigDecimal, BigNumber, etc.
Na maratona, Java perde muito em relação à performance e memória, por conta da orientação a objetos. E nesse tipo de contest, vai ser muuuuito raro precisar usar uma instância de uma classe criada. Programação “procedural” dá conta do recado numa boa.

Já teve caso de quando participei fazer o programa em java, não passar (resposta errada), aí tentamos em C (o mesmo algoritmo) e passou.
Bem, em todo caso, não custa ir sabendo C/C++. Se não der certo com um, tenta com outro! :slight_smile: [/quote]

A questão dos números de grande precisão podem ser resolvidos como o Andre falou (long long).
Um quesito desleal seria operações com string.

java possui a classe String
c++ possui a classe _string na STL

c não possui nenhuma. O string é um ponteiro para um vetor de caracteres na memória. Implementar um substring aí pode ser uma tarefa que vai te fazer perder algum tempo.
char[255] string;

Agora usar um objeto String vai me fazer perder desempenho? Não necessáriamente porque o hotspot vai melhorar o código para mim, enquanto em c o seu código vai permanecer o mesmo. Para você ver uma grande diferença de desempenho do código java para um c(muito bem elaborado) somente em operações muito críticas.