140 likes | 324 Views
ACM Programming Team. Bill Punch. ACM Programming Contest . One of the premier programming competitions. Held every year since 1977 MSU was the winner that first year! In 1992 MSU came in second (of the world competition), second to Melbourne
E N D
ACM Programming Team Bill Punch
ACM Programming Contest • One of the premier programming competitions. • Held every year since 1977 • MSU was the winner that first year! • In 1992 MSU came in second (of the world competition), second to Melbourne • It is a tough competition and requires a lot of practice. You really have to be "into" this kind of thing to enjoy the effort that is required • That's why we are here, to practice
The rules • Each "team" consists of three members • teams share a single computer during the contest • requires some coordination of effort (though less than you might think) • Each university can send at most three teams • Competition is done in two rounds: • first round is the regional competition • Our region is ECNA (East Central North America). You can find them at http://acm.ashland.edu/xxxx where xxxx is the year. No xxxx means the latest year • This is a tough region: UoM, Carnegie Mellon, Waterloo, Toronto
more rules • The top two from each region can go onto the world competition (held in various lovely places, last year Orlando, 2012 is Warsaw Poland) • sometimes more than 2 can go from a region. Ours is a pretty good region • world competition determines the winner!
Local Competition • We have to pick teams sometime in September/October. • selection of teams will be a competition held in the Fall • Our regional Final will be sometime in late October, probably at Grand Valley (last year it was Oct 21). • We will have some competitions during the course of this semester thanks to Charlie Andrews, using the ACM programming environment (more on that later).
What we need to do is … • Get better at learning how to apply algorithms to the problems that come up. • Practice, individual practice, is probably the most important so we will do more of that this semester
You can practice on your own • http://uva.onlinejudge.org • There are problems here of varying difficulty which you can submit and see how well you do • problems are numbered, we will be working off of these • you have to register to get onto this site, please do that.
handin • as a way of keeping track who does what, I have created a handin site for all of us • this is prgtem (only allowed 6 letters) • you should all be registered, at least everyone who came previously and said they were interested • I will give out problems each week. • You submit them to handin before the next session • Voluntary for those not getting credit, mandatory for those with credit. Every week, before class • In the comments of each program, record your time (that is, keep time as to how long it took you to get a correct submission to the UVA judge).
It is all about speed • This is a contest of speed. Comments, organization, OOP, none of that matters • Getting the right answer matters! • What counts as a right answer can be tricky! • the questions and the examples can look easy, but there are edge cases that can be difficult, time consuming • getting your program to run efficiently is often the problem. We must write efficient code!
Scoring • Each team gets some number of problems to solve in 5 hours • 7 – 9 problems, word problems which can be hard to parse • The team that solves the most problems wins! • If multiple teams solve the same number of problems, then how long it took them breaks the tie (short times win) • Every mis-submission counts as 30 minutes against your time! • Just remember, the more problems you solve, the better. That is the winning strategy • Testing is done by an automatic judge (like UVA) that tests a broad number of cases • if you mess up, you can get one of a set of cryptic error messages saying what went wrong
Languages • You can use one of 3 languages: C, C++, Java • We are a C++ shop so we will concentrate on that, but that is typically not the issue. Knowing the algorithm is the issue • none the less, familiarity with the language is helpful and we will talk about that early on. • If you have never programmed C++ before (or are just learning), you will have to work some to keep up.
C++ I/O • All I/O for Acm programming contest problems is assumed to come from standard in and goes to standard out. No file manipulation is required • It is as if the problem were run as follows. Assume the name of the compiled program is a.out • ./a.out < input.txt • output is fed to the console and graded
problem • Look at Volume1, problem 100 • remember the cin >> someInt will read in an integer from standard in • remember that cin.eof() is set to True when cin tries to read from an empty input
problem Look at Volume 4, number 483 Couple of things there: • how to read in the line: getline(cin,line) • how to parse the line : string streams • how to reverse the line: reverse iterator is nice