Skip to content

Algorithms and templates for competitive programming

License

Notifications You must be signed in to change notification settings

sgtlaugh/algovault

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub stars license

Algovault

A collection of algorithms, data structures and templates for competitive programming

  • Useful in online competitions like CodeForces, Google Code Jam
  • Simple to use as a black-box without compromising performance
  • Example usage and sufficient documentation

  • Codes are mostly written in C++. majority should work with C++11 and some might require C++14 or higher. Some algorithms are written in Python. For Python, use Python 3. Most of them should be compatible with PyPy as well.

    Implementations are usually stress-tested and cross-checked against various problems. Nonetheless, they are not guranteed to be flawless and work in all cases.

    For bugs, refactoring and improvements, feel free to file an issue or a pull request as contributions are always welcome.

    The Zen Of Contributing

    Inspired from The Zen Of Python

    Beautiful is better than ugly
    
    Simple is way better than complex
    
    Consistency matters
    
    Flat is preferred over nested
    
    Typing is better than incomprehensible macros
    
    Because readability counts
    
    But not as much as speed
    
    Some documentation is better than no documentation
    
    No documentation is better than extensive documentation
    
    But not as important as ease of reusing as a black box
    
    Four spaces are better than tabs
    
    Tabs are better than no spaces
    
    If the implementation is hard to explain, it's a bad idea
    
    If the implementation is easy to explain, it may be a good idea
    
    Namespaces are one honking great idea, let's do more of those!

    Future Work

    1. This is still a work in progress so I'll port more code from my template over the time
    2. Add stress tests, automated unit tests and integration tests
    3. Refactor and simplify old implementations
    4. Add practice problems
    5. Add a comprehensive index

    License

    The project is licensed under the MIT License