Judging Tips The 2008 North Central North America Regional Programming Contest

advertisement
The 2008 North Central North America
Regional Programming Contest
Sponsored by IBM
Judging Tips
The notes given below provide observations about the problems, the test data
sets, and suggestions for judging the submitted solutions. Please read through all
of the material provided here, and possibly discuss it during the judge’s
meeting.
 Pat yourself on the back for helping out! This contest is a volunteer effort,
and without lots of you volunteering, the contest wouldn’t happen — or it would
have to be hosted in a single site (with attendant long and potentially difficult
travel) and with registration fees.
 Verify the compilation and execution environments work, and are identical.
While this task is most appropriate for the Site Director, as judges you are
also responsible for the correct and timely judging of solution attempts by the
teams. Try to compile and execute a simple "Hello, world" program on a
contestant's machine, then do the same on the judging machine. Look at the
version numbers for compilers and verify that they are identical.
 Prepare the initial Dialogue Request form and distribute it to all teams. If
you haven’t already done so, make a decision as to how teams are to read the
judge’s input data set for each problem. There are two obvious choices. One is
to expect the team’s program to read from standard input and write to
standard output. I/O redirection for standard input and output (using < and > on
the command line) make it almost impossible for an executing program to
modify the standard input file. The other scenario (frequently used) is to place
the judge’s test data set in a named file (e.g. prob01.txt) and require team
programs to open and read from that file (and write their output to a similarly
named file, like prob1.out). If you choose to have team solutions read from a
data file, you must give names to the data files and inform the teams at the
beginning of the contest. The data files in the judge’s data directory
(JudgingData) are named judge01.in, judge02.in and so forth. Whatever names
2008 North Central North America Regional Programming Contest
Judging Tips, Page 1 of 6
you select for the data files must be advertised to the teams through the
initial Dialogue Request (which has already been provided to the Site Director).
Also inform the teams as to where their output should be directed — to the
display or to a file. A copy of the Dialogue Request should be provided to each
team, either through the message board or in paper.
 Become familiar with the problem set. Read through the problem statements
as soon as possible and become familiar with them. Work through, where
possible, some of the test data shown in the problem statement. If you find
something that doesn’t look quite right, discuss it with the other judges. If
after discussion you still can’t discover how a particular output was obtained,
send e-mail to stanw@unomaha.edu or call (402) 554-3583. I’ll be available
during the entire contest.
 Plan for a consistent, professional judging effort. As much as possible, try to
be consistent in how you judge runs. If possible, it is ideal for the same judge
to be responsible for (that is, to judge) all of the submissions of a given
problem. If there are eight judges, then each judge can be responsible for a
single problem. At some sites this won’t be possible, but each judge could be
responsible for several problems. Try to avoid the “let’s see what we find
wrong with this submission” — or the “gee, look what a silly mistake these folks
made!” syndromes. Remember that this contest is supposed to be fun for the
contestants, not a grueling test of legalese and arcane contest procedures. Also
remember that there are many other sites in this region that are hosting this
contest, and you — the judges — are responsible for determining the winners
across the entire set of sites!
 Become familiar with the judging and logging procedures. As a judge, you
have two tasks: evaluate submissions by teams, and log submissions and the
result of your judging. Prior to reaching you, each submission should have been
logged—that is, the identity of the team and problem, and the time it was
submitted should be recorded. Some sites may choose to have you perform this
task, and the Site Director will inform you of the procedure for doing this.
Other sites may use a networked facility (like PC^2). In any case, you – as
judges – should be aware of this logging procedure, since you are responsible
for the overall correctness of the judging.
If a networked procedure is not used, the forms provided to you by the Site
Director can be used for logging. A judging log sheet should be prepared for
each team at the site. After judging a run, enter in the appropriate column
2008 North Central North America Regional Programming Contest
Judging Tips, Page 2 of 6
(headed by the problem number) the time when the run was submitted, a slash,
and the number of minutes since the start of the contest (12:30 PM CST). If
the run was correct, enter this information at the bottom of the column. If
the run was incorrect for any reason, enter the information in the next unused
entry at the top part of the column. (Multiple log sheets can be used in case a
team should submit a run more than 10 times.) A sample Judging Log Sheet for
a (hopefully) fictitious school has been provided. You need not worry about
completing the last two rows on the Judging Log Sheet until the contest is
complete.
Judging data is also to be entered on the regional score system. This allows
automatic updates of the scoreboard, and guarantees that the required data
(which must be submitted to the ICPC headquarters to guarantee we get our
share of the “wild card” slots for the finals) will be available. Details on the
regional scoring system are provided in a separate document.
 Verify the time-stamping procedure for judged run submissions. Each
solution is to be time-stamped as soon as it is submitted by a team. Please make
certain that all those individuals responsible for assisting in the transport of
runs from teams to judges are aware of the procedure for marking the Time In
field on the Judging Request sheet that accompanies each problem.
 Review the possible responses to a judged run. Each submitted run is either
judged as a Correct Solution, or one of the following messages should be
indicated. DO NOT GIVE ANY RESPONSE TO A JUDGED RUN EXCEPT ONE
OF THESE. DO NOT GIVE ANY ADDITIONAL COMMENTS, REMARKS, OR
SUGGESTIONS TO THE TEAMS. FAILURE TO FOLLOW THIS PROCEDURE
MAY RESULT IN APPEALS.
Correct Solution
The run produces the correct output for the judge’s input data set,
produces no extraneous output, and terminates properly.
Output
formats may vary slightly from those shown in the “Expected Results”
document, within reason, unless the output formatting is a significant
component of the problem.
Wrong answer
This is the canonical incorrect solution message. As soon as any result
produced by the program is incorrect, mark this message.
Run-time error
Examples include floating point overflow, division by zero, domain error
(e.g. square root of a negative number), input error (reading text when a
numeric was expected) and attempt to read past end of file. This will
2008 North Central North America Regional Programming Contest
Judging Tips, Page 3 of 6
normally be marked only when the execution environment produces a
termination message.
Time-Limit exceeded When it is obvious that a program has entered an infinite loop, or the
algorithm used to solve a program is grossly inefficient, then this
message should be indicated. There is no explicit time limit for any
problem. Still, no reasonable solution to any of the problems in the set
should require longer than 60 seconds, and that’s being very, very
generous!
Presentation error
If the output format produced by a program is wrong, or varies greatly
from that shown in the example provided in each problem statement,
then this message will should convey that information to the team.
Likewise, if a problem requires a certain degree of numerical precision,
and the program does not producing that precision, then this message can
also be used. If specific formatting is not required by the problem
statement, then some latitude in the output format can be allowed.
The official rules for the contest are
csalpha.ist.unomaha.edu/acmregn/rules.html.
available
2008 North Central North America Regional Programming Contest
on
the
regional
web
site
at
Judging Tips, Page 4 of 6
Notes on the Judging the Problem Set
Problem 1: Prime Tracks
The soundex idea has been around for a long time, and this variant is right out of Knuth
volume 3. But it does not seem to have been used as contest fodder for a while. This
shouldn’t be much of a challenge for the best teams, but will still provide some challenge for
most. There shouldn’t be much trouble in the judging of this problem since the output
format is simple. Do verify the output format, however, since it’s explicitly stated in the
problem that there must be four spaces (or a tab) between the soundex code and the input
name. The names should logically appear in the same case used in the input, but if it’s been
converted to all one case, that’s not a problem (that is, no presentation error should be
reported). However the first character of the code must be upper case. If it’s correct, but
has the wrong case,then a presentation error should be reported.
Problem 2: Election Results
This problem has a number of potential “gotchas” but is still pretty reasonable. Enumerating
all the possible cases is essential if a team is to deal with the varied input permitted. Note
that there is no limit on the length of a candidate’s name (except that it must be at least
two characters long), and there’s no limit on the length of the name of an office. There is
also no restriction on what single characters (those that are ostensibly used by a voter to
select a candidate) may be used on a ballot. There is a requirement that at least one
whitespace character will appear on each side of each voter mark (otherwise the multiple
marks would be interpreted as a candidate’s name, and one case tests this). The order in
which candidate’s names appear for a given office in the input is not required to be fixed,
and the judge’s input data tests this, too. The problem statement makes it clear that
candidates elected to or tied for a “high” office are ineligible for election to a “low” office,
and this can potentially eliminate all candidates for an office.
Please make certain that the teams (and the judges!) are aware of a change to the problem
statement after they were printed. The printed problem statement does not specify the
order in which the names of tied candidates are to be displayed; in fact, it specifically says
they may be displayed in any order. To make judging easier, the problem (and the expected
output) has been changed to require that these names be sorted prior to their display. So
the tied candidates for election 2, office of ChiefCook, should be displayed in the order
“Bob Fred” and not “Fred Bob” as is printed.
Still, judging the problem should be reasonably simple. Some output lines will be very long
since the data tests cases with 100 tied candidates, and has one case with an extremely long
(but real – see http://everything2.com/index.pl?node_id=1534419) name.
Problem 3: Cannonball Pyramids
This is intended to be a problem that all teams will solve. The output format is explicitly
specified, so presentation errors are possible. A limit on the number of cannonballs on an
edge of the base is given, so a team should be able to manually verify their solution will run
for all possible cases.
2008 North Central North America Regional Programming Contest
Judging Tips, Page 5 of 6
Problem 4: Pencils from the Nineteenth Century
This little problem shouldn’tchallenge the best teams, but a lot of teams may “wander
around” for a while trying to develop a solution approach. Judging shouldn’t be too difficult,
but tedium may set in if you’re using manual judging. The output format is pretty explicit, so
“diff-based” judging is possible, especially since the order in which multiple solutions are
presented is specified. If any of the blank lines are missing, but everything else is correct, a
presentation error should be reported. If any of the solutions are missing or incorrect, then
wrong answer is appropriate.
Problem 5: Fibonacci Period
This problem looks innocent, but may well be one of the most difficult in this year’s contest.
One of the test cases requires a relatively long time to run (both Java and C solutions run a
bit longer than a minute on a variety of machines), so it may take a judge some time to learn
how to distinguish between correct solutions and those that are running way too long. The
output itself is trivial to judge. The likely judging responses are time limit exceeded, wrong
answer, and correct (of course).
Problem 6: Painted Calculator
The challenge here is organizing the combinatorial search so it doesn’t run too long. Correct
solutions might run tens of seconds, but much longer than this probably indicates poor
algorithm choice and should get time limit exceeded. Other than time, the output should be
very easy to judge.
Problem 7: 3-Trees
This little problem should be another one that good teams get quickly, but most teams
shouldn’t have too much difficulty with it at all. The expected approach is to build the 3tree data structure, then do the appropriate traversal and count the nodes visited. Obiously
snafus could result in time limit exceeded, but it should normally run very quickly. Another
potential problem could be a memory fault, but the output format should be easy to judge if
a program completes in a timely manner.
Problem 8: Egyptian Multipllication
The idea behind this problem has been around for quite a while, and it shouldn’t be too tough
to solve. The potential for presentation errors is obvious, but time shouldn’t be a concern.
Problem 9: Binary Clock
The binary clock idea isn’t new, but may be new to many of the teams. Still it’s pretty easy to
understand. What makes this problem different is its use of a text representation of the
time on such a clock. The problem was made a bit more interesting by asking teams to verify
the time is legal and the syntax of the input is correct. (No LALR parsers are required :-)
2008 North Central North America Regional Programming Contest
Judging Tips, Page 6 of 6
Download