Rules & FAQ
Competition rules, guidelines, and frequently asked questions.
Eligibility and Participation
All are welcome to participate in PHSCO contests. Only pre-college students are eligible for prizes.
There is no fee for participation.
You can choose to participate alone or with a partner. If you win as a team, prize money will be split between both competitors in the team.
Only participants registered on time will be able to compete.
Contest Format
The contest will contain 15-20 programming problems to solve in 4 hours. Each problem will present a unique task, and your team will need to design and implement a code algorithm to solve the problem. Sample inputs and outputs are provided for each problem to assist with debugging. Solution programs can be written in C++, Java, or Python. If you want to use another language that is not listed here, fill out a support form.
Only a select few problems will be available at the start of the contest. More problems will be revealed as your team completes problems and submits correct solutions. Each problem is weighted equally, but note that some problems effectively become more "valuable" by locking further progression in the contest behind their completion. A diagram of all problems in the contest and how to unlock their statements will be given early on in the competition.
When you submit a program on Codeforces, it will automatically be run against a number of test cases, which must all be passed to receive credit. No information on the status of hidden test cases will be provided besides whether your solution passes or fails them. If you pass all test cases offered by a problem, clicking on your submission details will show checker feedback and reveal any access codes attached to the problem. If you need to view this information again, you can simply view your submission history; resubmission is not needed and will penalize you.
Final standings will be calculated using an ICPC-style leaderboard, with a 20-minute penalty for incorrect submissions (including resubmission after a correct answer). Rankings are based on the number of problems solved, with ties broken by the team's total time penalty (sum of elapsed times until first correct submission per problem, plus penalties for incorrect submissions). No time penalty is applied to unsolved problems. The leaderboard will be frozen 1 hour prior to the end of the contest.
All problem statements are intended to be straightforward, with no intentional "hidden tricks". If you have a question regarding the wording of a problem during the competition, fill out a support form and the organizers will respond as quickly as possible (note, however, that you may not get more than a "read carefully" response). In the event that a problem statement needs correction, all competitors will be notified via an email, a Discord announcement, and through the Codeforces notification system.
Contest Conduct and Academic Integrity
PHSCO believes strongly in academic integrity. Participants who violate any of the policies below will be disqualified from the competition.
- Work by yourself if competing individually, or only with your registered teammate if competing as a team.
- Use of generative AI (e.g., services like Copilot, ChatGPT, or similar tools) is STRICTLY PROHIBITED.
- Consultation about the contest problems with people other than your teammate (if applicable) is prohibited.
- Do not share any technical information or code pertaining to the contest while it is actively running.
- You may only consult resources that provide information about basic functionality of your programming language (e.g., syntax, library functions, input/output, etc.).
- Do not submit code that was not written by you. Plagiarism checks will be run at the end of the contest.
- Do not use pre-written code or "templates" to get a head start on your coding. This is at the discretion of the judges; pre-written library imports and shorthand definitions are fine, while a pre-written DFS function is not. Generally, as long as a template doesn't contain any real "logic", you should be fine.
- Do not use multiple Codeforces accounts.
- Do not participate in a contest that does not match the division you signed up for. If you accidentally submit for the wrong division, contact support.
- Do not submit any code that behaves in a malicious way towards the grading system.
- Do not intentionally sign up for a lower division than your team's skill level to boost your placement.
- These rules are not comprehensive and the usage of any loopholes in rules are frowned upon. Please, don't ruin the fun for yourself or for anyone else!
- Generally, any decision of the judges is final.
Technical Details
- Programs must compile and run within the time and memory limits specified by Codeforces.
- Any languages supported by Codeforces are allowed for submission. Note, however, that problems are only guaranteed to be solvable in C++, Java 21, and Python 3.
- Use standard input and output (stdin/stdout) as specified by each problem.
Frequently Asked Questions
What division should I join?
Try to join the division where you will learn the most! If you are taking courses like APCSA or APCSP, or this is your first-ever programming competition, the Standard Division is a great introduction to competitive programming. If you are very comfortable with programming (i.e. FRC, game dev, outside projects) and/or have competition experience (ACSL Senior, USACO Silver+), the Advanced Division is probably more suitable for you.
What resources can I use?
You are allowed to consult reference books and materials, such as language documentation and websites like w3schools. However, any code you submit must be written by your team. Pasting large code snippets from online sources is disallowed. You cannot use pre-written code or "templates" to get a head start on your coding (refer to the contest rules for more details). Additionally, you are not allowed to consult online forums such as StackOverflow and/or post questions regarding the competition while it is running.
Is AI allowed?
No. Using an AI during a programming competition is no different than using a chess engine during an online chess tournament - it's morally wrong, you won't learn anything, and it ruins the fun for everyone. Any suspected use of AI will lead to immediate disqualification and potentially being blacklisted from future events.
What programming languages/libraries are supported?
All problems are tested with C++, Java, and Python solutions. Only inbuilt libraries are supported; i.e. math for Python and bits/stdcpp.h for C++.
My program passes every test case except for one. Can I get partial credit?
Unless otherwise stated, your program must pass all test cases to receive credit for that problem.
What happens if I have technical issues during the contest?
Contact our support team immediately via our support form or Discord server. We will do our best to resolve issues quickly, but time lost due to personal technical problems will not be compensated.
Are there prizes for winners?
Yes! Prizes will be awarded to top-performing teams in both divisions. Prize details will be announced closer to the competition date.
What can I do to prepare?
Online resources such as the USACO Guide are an excellent way to learn about the algorithms and structures used in programming competitions. Additionally, you can view a list of problems used in past PHSCO contests here.