# Algorithms for Competitive Programming

The goal of this project is to translate the wonderful resource http://e-maxx.ru/algo which provides descriptions of many algorithms and data structures especially popular in field of competitive programming. Moreover we want to improve the collected knowledge by extending the articles and adding new articles to the collection.

Compiled pages are published at https://cp-algorithms.com/.

## Changelog

- December 20, 2022: The repository name and the owning organizations were renamed! Now the repo is located at https://github.com/cp-algorithms/cp-algorithms. It is recommended to update the upstream link in your local repositories, if you have any.
- October 31, 2022: It is now possible to select and copy $\LaTeX$ source code of formulas within the articles.
- June 8, 2022: Tags are enabled. Each article is now marked whether it is translated or original, overall tag info is present in the tag index. For translated articles, clicking on
`From: X`

tag would lead to the original article. - June 7, 2022: Date of last commit and author list with contribution percentage is tracked for each page.
- June 5, 2022: Enabled content tabs and sidebar navigation. The navigation is moved to a separate page and its structure should be adjusted in navigation.md whenever a new article is created or an old one is moved.
- January 16, 2022: Switched to the MkDocs site generator with the Material for MkDocs theme, which give the website a more modern look, brings a couple of new features (dark mode, better search, ...), makes the website more stable (in terms of rendering math formulas), and makes it easier to contribute.

### New articles

- (17 October 2022) Binary Search
- (17 October 2022) MEX (Minimum Excluded element in an array)
- (12 May 2022) Factoring Exponentiation
- (7 May 2022) Knuth's Optimization
- (31 March 2022) Continued fractions

Full list of updates: Commit History

Full list of articles: Navigation

## Contributing

## Navigation

search: exclude: true

- Home
- Algebra
- Fundamentals
- Prime numbers
- Number-theoretic functions
- Modular arithmetic
- Number systems
- Miscellaneous

- Data Structures
- Dynamic Programming
- String Processing
- Fundamentals
- Advanced
- Tasks

- Linear Algebra
- Combinatorics
- Fundamentals
- Techniques
- Tasks

- Numerical Methods
- Geometry
- Elementary operations
- Polygons
- Convex hull
- Sweep-line
- Miscellaneous

- Graphs
- Graph traversal
- Connected components, bridges, articulations points
- Single-source shortest paths
- All-pairs shortest paths
- Spanning trees
- Cycles
- Lowest common ancestor
- Flows and related problems
- Matchings and related problems
- Miscellaneous

- Miscellaneous
- Sequences
- Game Theory
- Schedules
- Miscellaneous