Competitive Programming. What is it?
Competitive programming is a whole other world of computer science. It’s a mind competition to see who can solve the most computational problems efficiently and quickly. The difference between a normal programmer VS a competitive programmer is skill. There’s a difference between having knowledge and having the skill to utilize it. Gaining knowledge is easy, but utilizing it needs practice and time. Learning competitive programming will help you adapt a problem solving mindset, which will not only help you in the computer science field, but in your daily life as well. Check out this video to learn more. Competitive programming will also help you in the technical part of most computer science related interviews, and will help you get into major companies. Most companies do a technical interview where they test your skills, by giving you problems and seeing how you code the solution for them.
How Do I start? Where can I compete?
Egypt has a ton of competitive programming competitions that happen every year, and most are beginner-friendly and don’t need years of practice. Teens like us are at an advantage if we start early, and there are tons of resources to help you to start.
First off, you can start by your own and test your skills at the next competition, which is recommended. [ will explain more on how to later ]
If you’re a prepatory student, the EOI juniors competition is a HIGHLY recommended competition to start. It not only teaches you CP from zero up, but is also really easy to get medals in if you already have some background in CS. The EOI competition will also give you the chance to compete globally and fly to different countries for international competitions.
CP competitions aren’t just solo, in fact, most of them are team competitions, which personally I think are more fun. You have more minds to think of different solutions for a problem, and generally discussing a problem with your teammates out loud and having people helping you really helps motivate you and encourage you to do well.
What competitions to compete in
These are the main well known CP competitions in Egypt, though there are a lot of other competitions that you’ll have to be in the CP community to hear about. Check the latest events!
These competitions stand out since they have online and on-site qualifications. Depending on the competition, you could get free transportation, accommodation, meals, and goods, while others you’ll need to pass some qualifications to get the good stuff. These competitions’ medals and certificates really help so be sure to participate in one whenever you hear about it, whether or not you think you’ll qualify, because you never know.
The EOI competition is a yearly competition with two divisions, juniors and seniors, each with their own contests. Each year the accommodation and time for them differs, but if you pass the online qualifications, it’s about a 5 day stay at an academy for the competition.
The ECPC and IIOT competitions are both team competitions whose online qualifications are fairly easy to pass. The onsite qualifications vary depending on the year.
Learning CP
For which language to use, almost all competitive programmers use C++. Not only is it an efficient language especially for CP, but it’s also easy for beginners to learn. This is a sheet that collected how to study C++, the different topics and algorithms, and problems to solve ( and this is a video explaining how to use it ). However, it’s kind of old. The first video dating back to 11 years ago. The problem sheet it has and the different resources it has is still pretty useful, but it’s not the best format for everyone. So, what do I do then you ask? Well, I’ve collected a bunch of resources, websites, and videos for you to start with that I consider beginner friendly, and also some videos for those who are not beginners and want to enhance their abilities. before we get into those though, the USACO Guide is a great website, not just for beginners, but even for intermediate programmers who want to learn more advanced concepts. It’s generally recommended for everyone.
Beginners Guide
First off, here’s what you’ll need to download and make an account in to start. ( or watch this video )
1- Downloading CodeBlocks.
codeblocks is the IDE you’ll be using to write and run your codes. It’s open source, easy to use, and most importantly, can tell you which lines in your code might have a syntax error. You can download it here.
2- Making an account on Codeforces.
Codeforces is the website almost all CPers use to solve problems, and where almost all of your problems will come from.
Popular resources
before giving you my personal guide that I think will help, here are some resources that people in the CP community consider to be THE resources.
First, the ICPC Assiut Materials sheet. It’s known in the community as THE SHEET. Starting from zero, separating the curriculum into different weeks, having a google doc in each week explaining each topic, with videos for explanation, homework sheets with answers, links to problems in each topic explained, tutorials, and sections depending on your knowledge, and, most importantly, since it’s popular, there are many different tutorials for solving their problems.
Second, the EOI C++ training course. ( the Youtube playlist for it. ) This is a course made by the Egyptian Olympiad in Informatics for beginners in competitive programming. This is also a short and compact version of what you’ll be studying if you join the EOI Juniors beaver challenge , which is just essentially the course you get before the EOI juniors competition itself. It’s also a highly recommended resource for beginners and its content is what’ll be in the EOI Juniors qualification contest, so you’ll know what to study.
Now, onto the guide! This’ll be a collection of resources I collected myself that I think will facilitate your learning experience and make it smoother and more learner-friendly.
Assuming you’ve already set up your Codeforces account, here is a collection of groups and contests to solve problems in. ( not all links will necessarily be codeforces links, but most will. )
Competitive Programming and C++ Websites
Finally, here is a collection of websites that I think are going to be really helpful. For more websites to help you learn C++ and more CS related topics, check out our resources!
CodeChef
CodeChef is a great website a with user-friendly interface and a streak system to help motivate you regularly study. It doesn’t only teach C++ and competitive programming, but also other programming languages. They also send you a summary of what you’ve learnt. Here are the courses in order:
Sololearn
Sololearn is an AMAZING website especially for beginners. Think Duolingo but CS. It’s super beginner-friendly and honestly you could just ditch all the previous resources and study from there. Most of their practice problems are only for premium though, so while there are problems you’ll solve on there, it’s best to apply what you’ve learnt with the practice problems sheet.
Exercism
Exercism is a lot like Codechef, the difference being that it’s less beginner friendly. ( note: you might see a lot of confusing syntax containing std:: something something. This is because for most of of the course, they do not use namespace std. This is because they are more focused on teaching C++ for its different uses. If you aren’t interested in using difficult syntax with varying uses, then it is not recommended )
Of course, these are not all the resources available nor all the information you need. But it’s an introduction. If you need any help or want to know more, join our community! We’re here to help and hopefully make you future champions.
Notes and Tips
- In contests, problems are not ordered by difficulty. This is something I cannot stress enough. There are tons of contests where you can get qualified just by snagging and focusing on the easier questions first. Whoever solves the fastest gets less penalty. It’s a competition in speed and skills. Read over all the problem statements first. Try to find the easy questions before the others can. The easy questions are purposefully scattered around the contest.
- Just because you didn’t qualify in the first competition you entered doesn’t mean you aren’t meant for this. You’re just starting out. Of course you’re not going to be amazing at this from the start. The fact that you’re learning and trying is already great enough. Whatever you learn now will help you later, but if you want to get into CP, don’t give up.
- Not everything is as it seems. Just because the problem set is telling you to do something, doesn’t mean you should try to make a code that does that. Try to find patterns, shortcuts, or rules that will give you the same outputs without following the path you think the problem wants you to follow. A great example of this is this problem from the ACPC Girls 2024 competition. Try and solve it with this tip in mind, and if you’re stuck, as us and we’ll help you!