# CP Advice for Freshers
1. **Start with Pre-requisites**:
- Learn the basic C++ syntax (up to functions, OOPs is not required for now but can be useful in the future).
- Get comfortable with the **Standard Template Library (STL)** containers.
2. **Master Fundamental Concepts**:
- Be thorough with **time complexity analysis**, **binary search**, **two-pointer techniques**, and basic **number theory**.
- The **PAG lectures** (link below) are a great starting point for understanding number theory concepts.
3. **Start Solving Problems**:
- Jump into **Competitive Programming (CP)** by solving problems. You can either:
- Work through structured problem sets.
- Participate in online contests on platforms like **Codeforces**, **Codechef**, or **AtCoder**.
- Most of your learning will happen while solving problems.
4. **Read Editorials**:
- Always read the **editorials** after solving a problem or contest to improve your understanding.
- Try to **upsolve contests** to enhance your skills.
5. **Structured Learning**:
- For more organized learning, refer to:
- **CP Algorithms**: Offers high-quality reading material for theory and algorithms.
- **USACO Guide**: A great roadmap for progressing in CP.
6. **Enjoy the Journey**:
- Most importantly, have fun solving problems! The more you enjoy the process, the better you’ll get at it.
---
# Pre-requisites
It’s recommended to set up your environment on Linux, as the process tends to be smoother and you’re more likely to use it for development in the future. However, this is not a requirement. Feel free to use any of the IDEs listed below or any other IDE you prefer.
- **VS Code Windows Setup**: [Tutorial](https://youtu.be/z2jDamkbBF0?si=6EeQzqqbrxFuY9X_)
- **VS Code Linux Setup**: [Tutorial](https://www.youtube.com/watch?v=NX8SHmkuLn4)
- **CLion Setup**: [Tutorial](https://youtu.be/pGdDt_Kw76A?si=IHBbkl8m69ZDQd6c)
- **Codeforces Setup**: [PAG Tutorial](https://drive.google.com/file/d/1JAUEeyP8E5N1zaZSNi7uFjhKV3m4jKa3/view?usp=drive_link)
- **Basics of Programming Languages**
- **C++ STL**: [cppreference](https://en.cppreference.com/w/cpp/container)
- **Programming Basics**:
- [W3Schools](https://www.w3schools.com/)
- [TutorialsPoint](https://www.tutorialspoint.com/index.htm)
---
# Roadmap
A complete roadmap for competitive programming:
[USACO Guide](https://usaco.guide/dashboard/)
---
# Learning New Concepts
- **Theory and new concepts**:
[CP Algorithms](https://cp-algorithms.com/)
- **PAG Lectures Resources**:
[PAG Lectures Drive](https://drive.google.com/drive/folders/1yELmOCVmh-mzOEPjxH9MaaYw_Z4s_ndG?usp=drive_link)
---
# Problems for Practice
- **CSES Problem Set**:
[CSES Problem Set](https://cses.fi/problemset)
- **Topic-wise Problem List**:
[Codeforces Topic-wise Problem List](https://codeforces.com/blog/entry/55274)