2017 ACM-ICPC North America Qualifier Contest
This page was last updated January 10, 2018 at 19:15 (UTC).
Contest wrap-up
Statistics on the contest
- We had 891 participating individuals (that submitted something during the contest)
- We had 728 participating teams (that submitted something during the contest)
- We had 683 teams solve at least one problem
- There were 7846 submissions on contest day, or about one every 2.3 seconds for 5 hours.
- Here is the distribution of how many teams solved how many problems:
number of problems | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
number of teams | 142 | 136 | 137 | 81 | 34 | 44 | 22 | 30 | 16 | 11 | 13 | 5 | 12 |
Thanks
This contest is always a lot of fun, but it requires a lot of work. It
wouldn't be possible without the amazing folks who volunteered their time
to make this happen. Major thank-yous to:
- Judges:
Andy Nguyen,
Arup Guha,
Bowen Yu,
Bruce Elenbogen,
David Sturgill,
Godmar Back,
Ivor Page,
Liam Keliher,
Mario Nakazawa,
Marko Berezovsky,
Mike Domaratzki,
Nathan Backman,
Rob Hochberg, and
Xiaoyuan Suo
- Problem reviewers:
Amanda Holland-Minkley,
Andrew M. Nuxoll,
Andy Huang,
Andy Nguyen,
Arup Guha,
Bowen Yu,
Brian C. Dean,
Bruce Elenbogen,
David A. Poplawski,
David Sturgill,
Denis Savenkov,
Dennis Matveyev,
Etienne Vouga,
Godmar Back,
H. Keith Edwards,
Howard Cheng,
Howard Whitston,
Ivor Page,
Jeff Ifland,
Jim Knisely,
Joshua Guerin,
Joshua Wang,
Kathleen Ericson,
Kathy Ames,
Laura E. Brown,
Liam Keliher,
Mario Nakazawa,
Marko Berezovsky,
Martin Allen,
Matthew Anderson,
Michael Goldwasser,
Mike Domaratzki,
Nathan Backman,
Nathan Gossett,
Paul West,
Robert Trenary,
Rob Hochberg,
Troy Vasiga,
Xiaoyuan Suo,
Yitzchak Novick, and
Zachary Friggstad
- Staff: Fredrik Niemelä, Pehr Söderman, Kattis folks, ICPC registration, Pat Hynan, Shelley Keller
- North America ICPC Steering Committee
Contest week information
- Last day to register teams (on icpc.baylor.edu) is Monday October 2, 2017 (by end of day).
- Last day to add members to teams is Thursday October 5, 2017 (by end of day). Empty teams are not able to compete.
- Contestants who are new to Kattis (or whose registration email is new to Kattis) will receive a new Kattis account via email (sometime this week). Contestants whose registration email is already known to Kattis will not receive an email about their new account (they will use their existing account).
- The contest website is naq17.kattis.com. Please be sure to log in to that site (not another Kattis site) with your contest-related account (not any other Kattis account you may have). In the past, a common problem has been people logging in to the wrong Kattis site or with the wrong user.
- If you need immediate help before or during the contest (e.g. you cannot login), we have a Google Hangout for support for the 2017 ICPC NAQ. Please only use this if needed for Kattis login problems, after verifying that you are using the correct credentials and are at the correct site. This is not for problem discussion or problem clarification questions.
- Coaches, please watch your email for further information from hamerly@cs.baylor.edu.
What is the North America Qualifier?
The ACM ICPC North America Qualifier is an online-only programming contest.
If you are a coach, you can use it in place of a local competition to help you
determine teams for your regional ICPC contest. Or you can use it as extra
practice. Despite its name, the North America Qualifier does not qualify (or
promote) any team to a regional competition.
The 2017 ACM-ICPC North America Qualifier Contest will be October 7, 2017 at 11:00 - 16:00 (CDT).
It is an online contest, held on Kattis.
Registration
Coaches, please register your teams on the Baylor ICPC registration site. At
registration close, we will take this data and use it to create the teams on
Kattis. Note that you must register for this contest to participate;
registering for a regional does not register for this contest, or vice-versa.
Make sure you register your team for the contest titled "North America
Qualifier".
(There are other contests with the word "Qualifier" in the name, so be careful.)
After registration is closed, due to the number of teams and the limited
support it will be impossible to accommodate new registrations or changes to
existing registrations. So please register early.
There is
one contest, with 12 "sites". The 12 sites correspond to the 11 regions of
North America, plus one extra site for contestants who are not eligible to compete in ICPC in North America
(e.g. high school students or people whose school is not in an ICPC North
America region). Please register for the site that corresponds to your region.
Here are direct links for each region (using these is likely the simplest route
to registration):
Coaches may register as many teams as they like (each team can have anywhere
from 1 to 10 competitors — that's up to you). If you are in doubt about how
many you may need, register more up front (as it will be impossible to add teams
after registration freezes). But please try to be somewhat realistic for our
planning purposes.
Coaches can create empty teams as placeholders, but should fill them with the
actual students that will compete before registration is closed. "Empty" teams
will not get competition login credentials.
Basic details
- What is it? An online (distributed) programming contest,
offered as a drop-in replacement for so-called "qualifying" contests (e.g.
school-level, pre-regional competitions).
- When is the contest? — October 7, 2017, 11:00 - 16:00 (CDT).
- When does official registration begin? It's open.
- When does official registration close? Please see the official ICPC registration site.
- Can I register after registration is closed? No, due to the
number of expected people participating and the limited support. Please make
sure to register for the correct contest before the deadline.
- Where do I register? See the links above on this page.
- What contest should I (a coach) register my team for? The site
corresponding to your region. Note that this is the "North America Qualifier",
not a regional competition. As the names of different
contests may look similar, please make sure you register for the North
America Qualifier, and the site corresponding to your region.
- What if I am not a part of ICPC? Please register then for
the ICPC-Ineligible site. This is for contestants who are (e.g.) in high
school or are otherwise ineligible to participate in a North American ICPC
region.
- Is this a qualifying contest, a practice contest, or something
else? We are calling this a qualifying contest for the regional
competitions. It can be (but is not required to be) used to help choose teams
for the regional programming competition.
- Why is it being offered so early in the fall? To make
sure it precedes all North American regional competitions.
- Must students participate in teams of three? Coaches may make
teams of one to 10 contestants, but no prescribed number is required. The coach
decides for their school and teams.
- Must I participate? No. If you don't find this useful for
your situation, feel free to ignore it.
- I already offer a contest. Why should I use this one?
There are several benefits. It will save you work, increase registration for
your region (which helps in allocation of wildcard slots for the world
finals), and gives all registered students a free year of ACM student
membership.
- How will results be used? However the coaches choose to
use them. The results do not dictate anything about which contestants get to
go to regionals, for example. However, one way we envision a coach may use the
results is to select the top-finishing team(s) for the regional competition.
- Where should I go to compete? Please compete wherever you
are. This is an online competition, so teams can meet in a common location,
but coaches should organize that on their own.
- What resources does a local site need to provide? For
each team, a computer with internet access, a web browser, and whatever
development environment(s) you wish.
- What judging system will be used? Kattis. You can create a free account and try out Kattis at
open.kattis.com. Note that the actual contest may be hosted at a different
website with different login credentials (which your coach will
receive via email after registration closes).
- Do I need to provide / can I provide my own judging? No,
it will be done through Kattis and our centralized contest management.
- Can I provide my own problems? We welcome your offer to
contribute problems to the official problem set — if you wish to do this,
please contact Greg Hamerly. However, we
will not support additional problems for just one site.
- What languages will be supported? C, C++, Java, and Python 2, Python 3, and (new!) Kotlin. Please note that Python 2 is accelerated via Pypy while Python 3 is not. Therefore Python 2 tends to run much faster.
- How many problems will there be? About 10-12.
- What will be the difficulty level of the problems? We are
aiming for a wide range, with multiple easier problems for novice programmers.
- How will the contest run? Contestants will submit code
and receive responses via the web. Coaches/facilitators should ensure the
integrity of their own contestants (such as internet usage during the contest,
appropriate books and materials, etc.).
- Is this one contest or multiple contests? While we will
use one set of problems, offered at one time, each participating school will
be in its own contest with its own set of results. Results will not be
collated across schools.
- How much does this cost? It's free.
- Will there be a practice portion of this contest?
You can practice using the Kattis system at open.kattis.com. You can create a free account
and submit problems to the judging system, just like in the qualifier. The
actual qualifier will be hosted at a different website with different
credentials.
- Who should I contact with questions? Greg Hamerly
Contest scoring
This contest scoring system will be the same as the world finals. That is, the
winner is the team solving the most problems. If two teams solve the same number
of problems, then the team with the lowest time is the winner. If two teams
have the same time the submission time of the last solved problem is used as a
tie-breaker.
The time is the sum of the time of submission (in minutes) of the earliest
correct submission for each solved problem, plus any penalty minutes for each
incorrect submission of a problem prior to solving that problem. Penalties are
20 minutes for any of the following reasons:
- Run Time Error
- Time Limit Exceeded
- Wrong Answer
- Output Limit Exceeded
- Memory Limit Exceeded
Compile error does not incur a penalty; it is not considered a valid submission.
Illegal Function does not incur a penalty, but any illegal function will be
investigated and a team may be disqualified from the competition if the judges
consider the program an attempt to exploit the contest system.
For more information on how Kattis scores problems, please see Kattis documentation.
For problem-writers
We are using the Kattis Problem format for developing problems.
This is the format used for the ICPC world finals. It provides a
structure for problem writeups, test data, solutions, and
configuration. It automates problem verification (for solutions and
anti-solutions), time limit determination, and finally installation.
There are two parts: the problem format and the problem
tools.
Kattis problem format
Here is some information on the Kattis problem format:
- There is an introduction to developing problems in the Kattis problem format.
- There is also a very detailed guide to developing problems in the Kattis problem format.
- The minimum things you need to provide for a problem are:
- Read and fill in the relevant problem.yaml fields — at least "author". Most are done for you already.
- Write the problem statement in problem_statement/problem.tex using simple LaTeX.
- Put sample and secret test data files in data/sample and data/secret using .in and .ans suffixes with corresponding prefixes (e.g. A.in corresponds to A.ans).
- Put at least one solution to the problem in submissions/accepted (preferably one in Java and one in C/C++)
Other nice things to have in a problem are:
- submissions/wrong_answer — program(s) which give wrong answers on (some) included test data
- submissions/time_limit_exceeded — program(s) which take too long on (some) included test data
- submissions/run_time_error — program(s) which cause a run time error on (some) included test data
- data/*/*.desc files to describe each test (e.g. A.desc)
- data/*/*.hint files to give feedback to submitters that fail on that test case in non-contest environments (e.g. A.hint)
- data/*/*.{png|jpg} files to illustrate each test case to judges (e.g. A.png)
- Start by modifying this sample ("skeleton") problem package.
- For more examples of problems formatted in the Kattis problem format,
here is the problem
set for the 2014 ICPC NWERC. Warning: this is a large download; about 90MB.
Kattis problem tools
After you're done writing your problem, you can use the Kattis problemtools
software on a Linux machine to verify the problem (using "verifyproblem") or to
compile a PDF or HTML version of your problem statement (using problem2pdf or
problem2html, respectively). You can get the Kattis problemtools in two ways:
- Try first to install this precompiled Kattis problemtools package for Debian / Ubuntu on your Ubuntu or Debian Linux distribution. This was built on Ubuntu 16.04.
- If that doesn't work, you can download and build the Kattis problemtools package from the source on Github. Clone or download it, run "make builddeb", and then install the resulting package (which is placed in the parent directory).
Primary contact:
Greg Hamerly