# How To Prepare For AtCoder Contests?

## Introduction

AtCoder is a programming contest site for anyone from beginners to experts. Weekly programming contests are being held at the AtCoder website on a global scale.

There are three types of official contests in AtCoder:

**AtCoder Grand Contest (AGC)**: This is their best contest. The problems will have high originality and require interesting observations.

**AtCoder Regular Contest (ARC)**: The problems may be a bit typical compared to AGC problems, but still I think most of you can enjoy them and they are good for practice.

**AtCoder Beginner Contest (ABC)**: This is mainly targeted for those who are new to competitive programming. The problems will be easy and educational.

AtCoder Grand contest is usually held twice a month whereas AtCoder Regular contest and AtCoder Beginner Contest is held weekly. All the contests are rated and there are a total of 8 levels which are depicted with the help of colors to make it more interesting.

This article explains to you in detail how you can use the AtCoder platform to its fullest and focuses on the details of the **Atcoder Beginner Contest.** Also please look at the end of the article where I have mentioned the important links for you to explore the AtCoder platform.

Coding Ninjas’ Competitive Programming course is a guide for the preparation of competitive programming course for free that aims to deliver a superior and clear conceptual understanding of competitive coding topics and every nook and corner required to ace competitive coding contests.

## AtCoder Beginner Contest (ABC)

AtCoder has classified the contests it organizes into three main categories based on the level of difficulty of questions among which the first one is AtCoder Beginner Contest. As the name suggests this is a beginner level contest and hence it doesn’t matter if you are a total noob at programming, you can come over here, register and get started! Nothing boosts your confidence better than solving a problem in an ongoing contest where people are participating from all over the world!

Not only that the AtCoder beginner contest is truly as the name suggests for beginners – the problems are pretty basic and if you know the basic concepts you will surely crack them.

Now let’s see what is the pattern of the beginner contest – this will cover the number of problems asked in this contest, their difficulty level, the type of questions that are generally asked and how you can prepare for them.

Start preparing For CodeChef with Coding Ninjas.

## Details of AtCoder Beginner Contest

AtCoder Beginner Contest is a 100 minutes long contest with a total of 6 problems to solve in the given time. The problems are given the name ‘tasks’ on this platform, hence you have a total of 6 tasks – A, B, C, D, E, F. All these problems are NOT of the same difficulty. Each problem keeps getting more and more complicated as you go from A to F. Because of the carrying difficulty, the points awarded for each problem solved is also different. The point values will be 100-200-300-400-500-600.

Remember you don’t straight away get points if you __solve the problem__. There are two factors involved in calculating your score:

- The time you take to solve a problem

- The number of attempts you take to get to the right solution

When you solve a problem, you get a score assigned to it. Competitors are ranked first by total scores, then by penalties. The penalties are computed as (the time you spend to get your current score) + (5 minutes) * (the number of incorrect attempts).

Coming to the type of questions asked in the AtCoder beginner contest, like I said before they vary in their level of difficulty. So it’s safe to say that the **first question** is the easiest one! And literally I mean easy – basic implementation question.

For example, generally in the first question you have to implement a basic formula ( like sum, divide, greatest integer ) or just print out if(statement 1) return true, else return false. On top of this, the constraints for the first questions are very easy. It’s generally – N<= 300 where N is an integer. So basically you can solve this problem even in O(N^3) complexity and you are good to go.

The main intention behind such types of questions is to see if you understand the problem statement and can implement and convert a simple sentence to code. It generally takes less than five minutes (much less if you are not a total beginner) to solve such problems. Also as a beginner, it helps boost your morale and gives you the confidence to move on to the next problem.

Moving on, the **second question** is not just an implementation problem. It focuses more on how you can not just provide a solution to the problem but also do it in less time. That is you don’t just have to implement this question but also do it in O(N) or O(1) generally. (The constraints are generally N<=10^9 ).

The question is generally easy to understand but you just have to come up with a way to not use a loop while solving it. The best strategy for such type of questions is to look out for possible patterns, AP series, or any way that you can formulate your problem ( look out for the corner cases! ) and not use a loop to solve it.

The **third question **usually needs some knowledge of basic data structures and algorithms so that you can effectively solve the problem. Remember as we go on, the level of difficulty keeps increasing. This problem is mostly based on sorting or searching algorithms along with time constraints – usually either N<=10^5 or N<=10^9.

Remember there is a penalty for wrong submissions so try to figure out first if your solution will work in the given constraints so that you don’t get a time limit exceeded error.

The **fourth, fifth and the sixth questions **are of harder difficulty level. If you are a total beginner, mostly you are not able to reach here because the time is just 100 minutes. These questions require a good understanding of Data Structures and Algorithms.

In these type of questions, you can follow the below mentioned points to come up with an effective solution –

- Read the problem statement carefully and try to understand what they are asking of you.

- Once you understand the problem, try to think of a basic solution first.

- After this, try to think of all other possible ways you can implement this problem so as to reduce the time complexity. Try to think of different data structures that you can use or different algorithms that you can apply that will help in solving the problem.

- Keep the constraints in mind while thinking of the best possible solution.

- Remember to include the corner cases in your approach.

- In the end, code your solution.

## How and What to Prepare For Atcoder Beginner Contest

The Atcoder beginner contest is an amazing contest in which you can participate no matter if you are a total beginner or an expert level coder. You will definitely find a problem for your level.

If you are a beginner, there are various ways in which you can prepare for this contest.

- First of all, don’t think that being a beginner participating in these types of contests can be difficult. Always remember to show up!

- Start off by solving just a single problem or two problems. Do not worry if you are not able to solve them also. This is just the beginning.

- Practice basic implementation problems. Start solving a number of easy questions – just some formula based, if-else type questions so that you gain confidence in the basic implementation of problems to code.

- Once you are past that, start focusing on Data Structures, Algorithms and Number theory. Don’t take them all at the same time. Start with one – finish it completely and then move on to the next.

- Don’t get confused by seeing a lot of sites for preparation on the internet. Just pick one – whichever you like the best and learn and solve from there.

- Here is a list of data structures and algorithms that you can focus on Data Structures and algorithms as stated below:
- Arrays
- Stacks
- Queues
- Linked List
- Trees
- Hash tables
- Graphs
- Searching
- Sorting
- String Algorithms
- Greedy Algorithms
- Dynamic Programming

- Explore all these topics one by one and solve at least 20-30 problems for each of them (don’t just solve the easy ones, try solving more and more medium level problems and once you feel comfortable enough, move on to the hard ones).

- Most importantly, practice daily! Believe us, you will feel much more confident about your coding skills, your ability to think of an approach to solve a problem than when you first started off!

**Frequently Asked Questions**

**Is AtCoder better than Codeforces?**

AtCoders problems give a new skillset to the coders. The questions are more attractive than Codeforces, and contests are held every week with high quality.

**Is AtCoder good for beginners?**

Yes, AtCoder is an amazing platform, whether it is for beginners or for advanced skilled programmers. It has an easy set of problems and contests for beginners to scale up their thinking skills.

**What is Dan in AtCoder?**

In AtCoder, Dan is seen as the ‘rank’ of the coder that he had attained during his participation in the contest.

**What is performance in AtCoder?**

After participation in each contest, you get a performance that represents how well you performed in the contest. Through this, the coder can set the benchmark for upcoming contests.

## Conclusion

AtCoder is an amazing platform for you – doesn’t matter if you are a total beginner or an advanced rated skilled programmer. Other than the AtCoder beginner contest also, there are other contests that are going on throughout the month. Just log in and get started. There are a few takeaways that you need to remember.

Don’t just keep practising the easy level problems. Yes they are important if you are a total beginner, but once you get past that level – always solve a problem that challenges you, that gives you something to think about and find new solutions.

Also, in these programming contests, after the contest is over – go over to the Editorials sections and have a look at the best solutions. Look how that is different from your approach and what you could have done better ( It might be possible that your approach is even better!! ).

This will help you greatly. Remember to upsolve – if you have solved till problem number 3, then try problem number 4 and 5 after the contest is over. This way you don’t get stuck at just one level – you don’t always want to just solve three problems right?

Keep learning and practicing. Good luck for your next contest!