Nu am participat la vreun concurs, asa ca nu-mi pot da cu parerea, dar: daca concursul este despre algoritmi si este analizata altceva in afara complexitatii algoritmului, atunci ceva nu-i in regula.
Si eu sunt de acord ca in general toate programele implementate corect care au complexitatea dorita de autori ar trebui sa obtina punctaj maxim. Prin ineficienta eu ma refeream la efortul/timpul necesar implementarii.
Nu pot fi de acord cu: "scrie-l oricum, numai sa fie rapid".
Nu programul trebuie sa fie rapid, ci timpul de implementare sa fie scurt. Un sfat pe care l-am primit in liceu (nu mai tin minte de la cine) era sa scriu cea mai scurta sursa care trece toate testele

. Toata povestea asta despre cum e cel mai bine sa implementezi in regim concurs este extrem de subiectiva, si daca ne uitam pe TopCoder la cei mai buni din lume vedem stiluri complet diferite. Totusi, exista lucruri care in programarea reala sunt descurajate, dar care apar foarte des prin sursele concurentilor de la concursurile de programare. Exemple bune ar fi existenta variabilelor globale, sau folosirea excesiva a STL-ului.
Aplicatiile reale sunt mari si astfel de "solutii" duc la cod greu de intretinut/inteles si in final la aplicatii ratate. Viteza nu trebuie sa vina din artificii de programare, ci din algoritm. Artificiile de programare adauga un plus de viteza si ininteligibilitate, de cele mai multe ori.
Desigur, doar ca unui olimpic ii va fi extrem de usor sa scrie cod bun

. Nu trebuie invinuite competitiile de algoritmi, care uneori incurajeaza "artificiile".
Ce ma nemultumeste total este tendinta profeorilor de a lucra cu mijloace invechite. Angajatorii nu asta asteapta. Doar un exemplu: iostream.h in loc de iostream, asa cum prevede standardul curent.
Inertie mare, interes mic, etc.