2024 High School Programming Contest - March 9th

Contest Information

The 2024 High School Programming Contest, sponsored and run by George Fox University's Computer Science & Cybersecurity Programs, will be held online Saturday, March 9th, 2024. We hope that this page holds all of the information necessary for competitors in the competition.

We offer a couple different options for schools to be involved in different capacities.

  • Tue-Fri, March 5th-8th there will be a non-competitive contest that will run the whole week. Problems will be available to solve via the contest system. Teachers can use these problems as projects during the week or to give various students additional practice. How you use this week's problems is entirely up to you. Teachers should contact the site director for a classroom set of credentials if you wish to utilize this resource.
  • To register teams for the competitive contest on Saturday, March 9th... please use the link above.
  • There will be three divisions available this year: Div-I (hard college problems), Div-II (intermediate to advanced HS problems), and Div-III (easy to intermediate HS problems). Choose wisely AND appropriately.
  • For any questions or to request further information please contact the site director, Dr. Brent Wilson, via email at [email protected] or telephone at 503-554-2722.

    Schedule

    The tentative schedule of events for Saturday, March 9th is as follows:

    8:30–9:30 AM Team check-in via Zoom (link provided later) and systems check
    9:30–10:00 AM Team briefing via Zoom (link provided later)
    10:00 AM Contest begins
    3:00 PM Contest ends
    All times are Pacific Time.

    Team Divisions

    A single team shall consist of 2–3 students. There are three divisions: Division I, II, & III.

    • Division III consists of students who are in the beginning stages of developing their algorithmic problem-solving skills. Div. III teams may have competed before but probably only solved a small handful of problems.
    • Division II consists of teams who have been coding for at least a year and may have competed before. They probably would have completed over half of the problems but would have not previously placed 1st, 2nd, or 3rd in a similar division,
    • Division I is a much harder division.. The majority of the problems will be similar to programming contest problems at the college/university level. This division is truly for the advanced students who want to challenge themselves and "go for the glory!"

    To assist in determing the proper placement of your teams, problems in each division will be roughly based upon the following:

    Division III
    • Formatting output
    • Control structures (branching, looping)
    • Boolean logic
    • String manipulation
    Division II
    • All Division III topics
    • Multi-dimensional lists/arrays
    • Recursion
    • Searching and sorting
    • Basic data structures (e.g., trees, graphs)
    Division I
    • All Division II & III topics
    • It's a surprise...

    Contest Logistics & Rules

    Each team will work remotely and utilize their own communication channel for discussing and sharing information, code, etc. with all team members. At the start of the contest, each contestant will receive the a set of programming problems via their email. The students will write programs to solve as many of these problems as they can. Students within a single team may distribute tasks among themselves and work cooperatively in any way they wish. IMPORTANT NOTE: Each team will receive one set of login credentials... the contest system (purposefully) does not allow for two or more simultaneous logins from the same account. This is a shared resource that each team must navigate.

    As soon as a team believes it has implemented a correct solution to a problem, it should submit their program through the online web-based submission system.

    If the team's program does not correctly solve the specified problem on the first attempt, the team is allowed to submit a revised solution. Beyond simply incrementing the count of problems correctly solved, each correct solution will also receive a "time score" which represents the total elapsed time since the start of the contest, plus any time penalties for incorrect submissions. The time scores only come into play when there is a tie for a given count of problems correctly solved.

    For example:

    • Team 1 correcly solves its first problem in 30 minutes on its first submission for that problem. Team 1 now has a score of 1 (correctly-solved problem) with a time score of 30 (minutes).
    • 20 minutes later (i.e., 50 minutes into the contest), Team 1 solves a second problem on its first submission. Team 1 now has a score of 2, with a time score of 80 (i.e., 30 + 50).
    • Meanwhile, Team 2 submits an incorrect solution for its first problem 15 minutes into the contest. They are able to fix their submission and resubmit it at the 45 minute mark of the contest. Team 2's score now has a score of 1, with a time score of 65 (solution at 45, plus a 20-minute penalty for the incorrect submission on the problem).
    • If the contest ended at this point, Team 1 would win due to having 2 correctly-solved problems. The time score would only be considered if both teams were tied with 2; in that case, the lowest time score wins.

    Contest problems have a very wide range of difficulty. Division I, II, & III have separate problem sets; however, there is typically some overlap (for example, the same problem might appear as an "easier" problem Division I and as a "harder" Division II problem). Moreover, we try to include at least a couple problems that every team should be able to solve.

    D-II & D-III Problem sets from the 2018 contest are available for practice purposes:

    • 2018 Division I (These would be similar to Division II problems as of 2021)
    • 2018 Division II (These would be similar (slightly harder) to Division III problems as of 2021)
    • There are no examples for the newer much harder Division I because we like surprises :-)
    Note that all inputs should be read from standard input, and all output should be written to standard output.

    Supported Languages and Compilers

    Our contest judging system supports the following programming languages. Submitted programs will be compiled using the specified compiler flags below:

    Language Version Compiler Flags
    Java 17 OpenJDK javac 17.0.10
    C C99 GCC gcc 11.4.0 -std=c99
    C++ C++11 GCC g++ 11.4.0 -std=c++11
    Python 3.10 Python 3.10.12
    Only these languages/versions are supported; no other languages/versions may be used during the contest.