Any middle or high school student is eligible to participate in the competition. Students may compete in teams of up to four and are allowed to access reference books and the internet; however, they are encouraged to cite sources if they use code found online. Directly asking for assistance from anyone other than competition organizers is not permitted.
Teams with competitors who have graduated from high school may compete unofficially. They will not be eligible for prizes. These competitors should be marked as Ineligible during registration.
There are two divisions: standard and advanced. Standard division concepts include lists, loops, recursion, and algorithms such as BFS and binary search. Problems in the advanced division emphasize algorithmic complexity and efficiency, with concepts including pathfinding, dynamic programming, and segment trees.
Generally speaking, standard division problems range from Bronze to Silver USACO levels, while the advanced division problems range from Silver to Platinum. Take a look at our archive to get a sense of the difficulty of each division. The sample problems on the home page can serve as additional guidance for which division to choose.
Competitors will receive a number of problems and submit solutions in Python, Java, or C++ to our online grader. Upon submission, teams will receive feedback on the accuracy of their program for ten preliminary test cases. These pretests are meant to give teams a general sense of the performance of their solution, without revealing the exact score. The results of the forty real test cases which are used for rankings will not be released to teams until the end of the competition.
For each preliminary test case, teams will receive the input and output of their program, as well as any errors that occurred. There is no penalty for multiple attempts, and there is no limit on the number of submissions. Teams will receive one point for each test case they pass (not pretests), plus twenty points for each problem on which they pass all test cases. This means that teams may receive partial credit for suboptimal solutions. At the end of the contest, only the most recent submission to each problem will be graded.
All students are expected to behave appropriately. This includes being respectful to others, following competition rules, and just using common sense. Violation of any of these rules is grounds for disqualification from the competition.