Computer Programming Contest - a
contest where
programmers
attempt to solve as many computer problems as they can. The
team which solves the most problems in the least amount of time
wins.
A programming contest is a classic example of black box testing. Teams
submit their solutions (code) to the judges. The judges run/test
the submission (also known as a run)
against their data and return a judgement. The teams have no knowledge
of the judge's data set, but have a relatively clear description of the
input data.
Contest Problems
Contest problems are typically non-trivial and require the power
of a computer to solve. The problems must be solved within
a time limit (3 or 5 minutes typically).
A past contest problem which epitomizes this characteristic is: read
two integers from an input line. Raise the first number to
the second number (exponentiation) and return the last two
digits of the result. The numbers range from 0 to 2147483647.
Example Input:
4 2
10 8
Example Output:
16
00
A simple example is: 4 2 ( 4 * 4 = 16 ) answer would be 16.
Another example is: 10 8 ( 10 * 10 *... = 1000000000 ) answer would be 00.
Some Judge's test cases were:
1 1
2147483647 0
2147483647 1
10 300
0 2147483647
2147483647 2147483647
Multiplying 2 billion times itself 2 billion times takes hours, so there
is a trick to solve the problem within the time limit. The time limit
is for all test data sets.
This is an example of a local contest problem. In the
Regional and Finals (ICPC) Contests the problems typically are much more difficult.
Contest Scoring
There as many ways to score
a contest as there are contests.
Typically, the team who solved the most
problems wins. Tie-breaker are penalty points (also known as points).
For each problem solved, a point per minute is assessed. Next, if any
submissions for that same problem were unsuccessful (given a "no" by the
judges) 20 or 30 points may be assessed per problem solved. These penalty points
are accumulated into a single score and when two teams have solved the
same number of problems, the team with the fewest points wins. The last
tie breaker - if both teams have the same number of solutions and same
number of penalty points, the team who solved their first problem the
fastest wins. Another note, if by chance a team submits a solution
for a problem they have already solved, that submission is not counted against the team.
(Though there are some contests where all
submissions are counted against the team) In recent memory the fastest solution tie break has never been used.
Scoreboard
A scoreboard is used to display the rankings for a contest.
During the contest there are at a minimum 4 columns of information:
rank, Team Name (or Id), penalty points, and number of problems solved.
At the end of a contest the scoreboard can simply show the rankings.
Contests
The ACM Programming Contest which has changed name to be know as
the International Collegiate Programming Contest (ICPC), is
a college level contest where teams compete to be in the ICPC Finals.
A team may compete in a local contest (per University for instance) to
qualify for a regional contest. One or more top teams from the regional contest qualify for the Finals. The official web site for the ICPC is
http://icpc.baylor.edu , at this site are the official rules, qualifications and standings from the latest contest. The Regional Contests are typically in the fall. The Finals is typically held in March. Recent Finals were held in:
Eindhoven Netherlands (1999),
Orlando Florida USA (2000),
Vancouver BC Canada (2001),
Honolulu Hawaii USA (2002),
Beverly HIlls California USA (2003),
Prague Czech Republic (2004).
Automated Web Contests - there are a number of contest which are
completely automatic. Each team/person can submit their code solution
to a web site (computer) and view the results and scoreboard. These
contest may last for as long a month.
High School Contests - there are programming contests for high schools
as well. Since many high school students are new to programming the
contest problems are less challenging.