Hi again, it's been a while. This time I'm going to talk about another fabulous experience, the ACM-MCPC 2012 (Moroccan Collegiate Programming Contest) it's the 1st edition of the local qualification programming contest to the ACM-ACPC (Arab Collegiate Programming. Contest).
First of all I'll like to thank my university ENSIAS and the ACM represented by Eng. Mohamed Fouad (Deputy Regional Contest Director) and the judges. Also I'll like to thank the organizing committee for the great work, and congratulate them for organizing the event in record time.
About the contest, ACM International Collegiate Programming Contest (abbreviated as ACM-ICPC or just ICPC) is an annual multi-tiered competitive programming competition among the universities of the world. The contest is sponsored by IBM. Headquartered at Baylor University, with autonomous regions on six continents, and operates under the auspices of the Association for Computing Machinery ACM. During contest, the teams are given 5 hours to solve between 8 and 12 programming problems (with 8 typical for regionals and 10 for finals). They must submit solutions as programs in C, C++, or Java. Programs are then run on test data. If a program fails to give a correct answer, the team is notified and can submit another program.
I had the chance to participate in the Google CodeJam , so what are the differences ?
The first obvious thing is the languages that you can use, ACM-xCPC insists on the classics C,C++ and Java whilst in CodeJam you can use any language (Assembly if you're a masochist :P). In my situation I used PHP and Python during the CodeJam it was really helpful, but in the ACM-xCPC I didn't know enough C++ or Java to deal with the problems so we used C (Yes it really hearts !!!). C fans hold your guns, I huge fan of C I'm not doubting the power of C, but as a contestant you have constraints of time and you'll need a language with tools that would be Python else it's C++ (or Java if you are Bad luck Brian, Java fans you can shout me :/ ).
Second thing, ... yes the "No electronic documents" thing !!! , for the record, they allow printed documents but let's face it who used them anymore (even the course, I only keep the electronic version ). I like electronic documents and internet at least you should be allowed to bring your libraries, snippets and cheat sheets with you, that makes the difference between contestants. I know it's creating equal opportunities but still !!
Internet is also very useful, a good coder is the one who can solve problems using resources not only his acquired knowledge. But it's difficult to control the data and prevent cheating.
The last thing which I couldn't tell if it's advantage or a drawback is the *.in file. In CodeJam you can download in files to generate the *.out file, but you can use this trick to check if you're missing a case or you have a bug in a special case. In ACM-xCPC you can't do that, the in file is generated and tested on the judge's side.
So, ACM-xCPC is an opportunity to test your skills offline and without libraries, it's an opportunity to test your knowledge in C,C++ and Java and no kidding you should master one of them if you're calling your self a coder. Finally the results, :Drum: , my team was 5th :/ a tie between the 2nd till 6th and her comes the rule "In case of a tie, the title goes to the team with the minimum penalties for that problem".
Ok, that was it for the day, I'll post an article for every problem with my solution as soon as possible for now here are some pics.