Updated 09:40 Nov 23 2007

 Director: Brian Hare



Information for Contestants

CCSC Central Plains Region


Information For...



Problem Authors

Site Directors

The 2008 Contest





  1. Make sure you're eligible to compete.
  2. Find a coach and two teammates (unless they found you first).
  3. Make sure your coach registers your team before the deadline.
  4. Understand the contest rules.
  5. Study the error messages and notes to teams.
  6. If possible, practice with the compiler the site will be using.
  7. Understand your programming language
  8. Beef up your programming skills.
  9. Practice, practice, practice.

Team Composition

There must be exactly 3 students per team. However, each institution is allowed at most one team with 2 students. No more than one graduate student per team is allowed. Team members must be enrolled for at least 6 hours at their institution.

Available Documentation

The following documentation will be available on team computers:

  • C: glibc
  • C++: STL reference from cppreference.com
  • Java: JDK 6 documentation from Sunsite

But: See comment below about relying on online documentation.

Development Environment

All languages (C, C++, Java) will use the Eclipse IDE (Europa edition). C and C++ will use the CDT (C Development Tools) and MSYS toolkit. NetBeans 6.0.1 is also available for Java, C, and C++.

Reference Materials

We suggest bringing language reference manuals, data structures and algorithms textbooks, discrete math textbooks, and general math reference books. (The problems don't typically assume or require sophisticated mathematics, but you might be able to use math to simplify a problem or find an easier solution.) Also bring printouts of the problem statement and solution for any practice problems you worked on, and any notes you or your coach may have created.

Note that while sites will usually provide some online documentation, it is not a good idea to rely on that too heavily. When one of your team members is using the computer, he or she should be programming, not browsing through online documentation looking for inspiration. Use online documentation to help you remember the details of what you already know.

Understanding Your Programming Language

Obviously the better you know your language the better you'll do. Here are some suggestions about what you should know.

All Languages

  • File I/O: opening, closing, reading, and writing files.
  • Character classification and case conversion.
  • String handling, including converting between strings and numbers.
  • Using arrays.


  • The STL classes bitset, deque, list, map, priority_queue, queue, set, stack, and vector.
  • The STL algorithms accumulate, adjacent_find, binary_search, copy, count, equal, fill, find, for_each, generate, includes, inner_product, lexicographical_compare, max_element, merge, min_element, mismatch, next_permutation, prev_permutation, remove, replace, reverse, rotate, set_difference, set_intersection, set_symmetric_difference, set_union, sort, swap, transform, and unique.
  • The STL function objects such as equal_to, logical_not, and plus.
  • The string stream classes istringstream and ostringstream.


  • The wrapper classes Boolean, Character, Double, and Integer, which have a number of useful methods.
  • The java.util collection classes ArrayList, BitSet, HashMap, HashSet, LinkedList, Stack, TreeMap, and TreeSet.
  • The java.util class StringTokenizer.
  • The java.util.regex classes Matcher and Pattern.
  • The java.math class BigInteger.
  • The Scanner and Formatter classes, plus printf.

Beef Up Your Programming Skills

Knowledge of the following data structures, algorithms, and programming techniques will be useful.

  • Basic data structures: stacks, queues, arrays, and lists.
  • Basic algorithms: sorting and searching.
  • Binary trees.
  • Brute-force search.
  • Backtracking search.
  • Generating all permutations or combinations of a set.
  • Recursion.
  • Dynamic programming.
  • Graphs and their algorithms, including breadth-first search, depth-first search, minimum spanning trees, shortest paths, topological sort, and transitive closure.
  • Basic parsing techniques such as recursive descent, operator precedence, or infix-to-postfix conversion.

Practice, Practice, Practice

Schedule. Ideally you should practice once per week. Have a 1-3 hour practice where you try to solve as many problems as possible under contest conditions. Any problems that you don't solve must be solved during the week before the next practice. Keep a record of all the problems you solved, their solutions, and any notes about unusual features of the problem.

Team Strategy. You only have one computer, so learning to work as a team is essential. The most important thing is to accurately judge the difficulty of the problems. Many talented teams have done poorly because they started working on one of the hardest problems first. Remember that the length of a problem description is not necessarily related to its difficulty. For additional tips, check out Teamwork in Programming Contests: 3*1=4.

Problems. There are many sources for practice problems. Here are a few.

Other Competitions.


Based on procedures and materials developed for the ACM Mid-Central Regional Programming Contest.