Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Competitive Programming For Beginners

Welcome! This is a site maintained by Nitya (tech professional) and AJ (high-school student) to document our learning journey into competitive programming (CP) - with an initial focus on the USA Computing Olympiad (USACO) competition. Hello world!


About CP

Competitive Programming is a code-driven competition where participants are given a set of challenges and specifications - and must solve those problems with code that meets constraints in speed (fast execution) and size (code footprint).


About USACO

USA Computing Olympiad (USACO) is a competitive programming event for high school students. The USACO organization is a non-profit with the mission of motivating and training high-school computing students with:

  • training resources (free)
  • programming contests (online)
  • training camp (summer, invitation only)
  • opportunity for top 4 students each year to represent USA in the International Olympiad in Informations (IOI).

About Requirements

The current USACO competitions require solutions to be written in one of three supported languages: C++, Python or Java - which aligns with the TIOBE index in popular adoption rankings.

Code needs to optimize for running time and code size, which can create added challenges based on selected language.

  • C++ is best from speed/size perspective, but is more complex to learn and debug for new programmers.
  • Python is the easiest to learn but may not always allow solutions that fit the time or size constraints.
  • Java is a good middle ground with moderate performance and ease of use, making it a good starting point for first-time competitive programmers.

An additional incentive for Java is that it is seen as a valued skill for professional developers in enterprise and consumer domains.

Decision: We'll be using Python.


Format

USACO competitions are separated across the Bronze, Silver, and Gold levels, each more difficult than the last. The competitions generally share a consistant format to be followed by all competitors, described in the USACO Contest Instructions and Rules.

  • Problems: 3 to 4, often algorithmic but with straightforward demands
  • Competition Time Limit: 3.5 contiguous hours within the testing window
  • Run Time Limit: 2 seconds per input case for C an C++ and 4 seconds for Python and Java
  • Scoring: Points awards based on the number of test cases your program solves, with submissions marked correct or incorrect
  • Feedback: Correct responses recieve a green check while incorrect ones return a red one. Further feedback is given for incorrect responses, whch may recieve a T(Time Limit Exceeded), X(Incorrect Answer), !(Run Time Error or Memory Limit Exceeded), E(Empty Output File), or M(Missing Output File)

Technical Details

USACO provides tips in order to avoid common errors leading to incorrect solutions:

  • Solutions must be deterministic in nature(i.e. identical inputs should return identical outputs)
  • Solutions consisting of essentially print statements used to reverse-engineer input cases will be disqualified
  • Input and output files are case-sensitive
  • Only final submissions will be graded
  • It is not guaranteed that all legal datasets used as input cases will be solvable in the time limit
  • Several versions of the coding language are available, select the right one

Objectives

  • Setup - local development environment for competitive programming.
  • Learn - Java programming from free, online resources.
  • Practice - for USACO using resources from USACO guide and USACO org
  • Document - our learning journey online, as a useful roadmap for others.
  • Share - relevant resources or communities that were useful in helping us progress.

About

Collaborative project to explore competitive programming resources and projects for USACO

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages