This tutorial will help you to get introduced to competitive programming as well as to gain the basic skill set to be able to participate in the boot camp. You will also know about the requirements you need to fulfill in order to be eligible for boot camp.

**Getting Introduced to Problem Solving:**

If you are new in the field of problem solving, we strongly suggest you go through this Problem Solving Guideline made by us.

If you are interested in knowing more details and the structure of different online judges please read the following blog (although it’s not necessary for the time being). http://nsuproblemsolvers.com/2017/12/31/introduction-to-competitive-programming/ Most of the Online Judges provides very easy interfaces to submit problems. Here is a video showing how to submit problem in UVA online judge (https://uva.onlinejudge.org ) https://www.youtube.com/watch?v=N7U6mItopYQ

#### Getting Introduced to Vjudge:

Here, we will introduce a special type of online judge: Vjudge. Vjudge is a contest hosting site which has a collection of all the problems from most of the online judges. We will arrange all of our contests on this website. So please register here: https://vjudge.net/. You’ll also need to provide the user id of your Vjudge account during the registration of Bootcamp.

We have arranged a contest to help you get used to Vjudge. Here is the contest link: **https://vjudge.net/contest/21152** . Solve all 3 problems if you are using Vjudge for the first time. These are fairly simple problems to code and the Vjudge user interface is easy to use.

**Note:** You don’t need to know all the details of other online judges other than vjudge for the time being. Just register at vjudge and try to get familiar with it. As all of our contests will be hosted on this website.

#### Instructions for Java Programmers:

Java programmers usually face some problems at the very beginning, most of which are related to input-output. Our senior contestant Aminul Haq has made a tutorial that will help you solve those issues. Please go through this** Java Starter Guide.**

**Getting Prepared for Bootcamp:**

Bootcamp is the gateway to join the NSU Problem Solvers Community. In order to be eligible to participate in boot camp, you have to learn a few things by yourself. The skills you need to acquire are easily attainable for anyone who is willing to put a little effort. These are the basic tools you need to start competitive programming. The following steps will sequentially guide you to acquire the necessary skill set. In each of these steps you are provided with a contest and you need to solve the required problems. Contest links are given sequentially in the following paragraphs. Those who haven’t registered yet or haven’t filled up their NSU email address, please update your response in our NSUPS Bootcamp Season 04 Registration Form. We have prepared a list of problems to guide you through your preparation. You need to solve them in order to acquire the expected skill set. In order to keep track of the solves, we have created 5 Vjudge contests using those problems. You are advised to approach the contests sequentially as of the steps. And please, try to solve as many problems as you can. Solving these problems are essential to develop the skill set that you will require to participate in the Bootcamp. You can discuss about these problems with others; but copy-pasting other’s solution is strictly prohibited (and will be considered as cheating).

**Level 01 (Solve some straightforward problems):**

We have created a contest with some easier problems for the beginners. Most of the problems are quite straightforward and doesn’t require much logical thinking. It’ll help you to get used to problem-solving in any particular language. We suggest that you solve all the problems before moving on to step 2. It’ll help you a lot to get comfortable with the programming contest environments.

**Contest Link: https://vjudge.net/contest**

**Required Knowledge:**

- Basic syntax of any of the programming languages (C, C++ or java)
- Conditional statements (If/else)
- Loop
- Array sorting

**Resources:**

**Requirements:** [Solve at least 90% of the problems from this section]

**Level 02 (Enhance your basic math skills):**

In programming contests, a lot of problems are given which require knowledge from high school mathematics to solve. You need to have a good grasp on topics like combinatorics, probability, basic geometry etc. The next set of problems you are going to solve are mostly mathematical. Don’t get scared if you are particularly not strong in maths. These problems don’t demand deep mathematical observation.

**Contest Link: https://vjudge.net/contest**

**Required Knowledge:**

- Basic high school mathematics
- Arithmetic operations in C, C++ or Java.
- Basic Euclidean geometry
- Probability basics

**Resources:**

- https://www.khanacademy.org/math/early-math
- https://www.khanacademy.org/math/arithmetic
- https://www.khanacademy.org/math/geometry
- https://www.khanacademy.org/math/statistics-probability

**Note:** You don’t need to learn everything from the given resources for the time being. Just try to go through the first few lectures from each topic. But the more you learn the more will be better for you in the future.

**Requirements:** [Solve at least 75% of the problems from this section]

[Note: In many problems, you might encounter the issue of integer overflow which could lead to the Wrong answer. So if the values seem to get too large( 10^9 or higher) in your program, use long long instead of int].

**Level 03 (Get introduced to STL):**

In step – 1 and 2, the problems could be solved by using the basic tools of any programming language (e.g. array). Now you will get introduced to some advanced tools of a programming language which come very handy in solving different types of problems. In C++ these tools are the part of the ‘Standard Template Library (STL). The tools available in C++ are also available in other modern programming languages like JAVA. In this article, we will refer to C++ library while talking about these tools. You can easily find their equivalent names in Java. Note that C doesn’t have STL (in fact the most significant difference of the C and C++ is that the former doesn’t have STL). So we would highly recommend C programmers to shift to C++ since the syntax is practically the same with a few additions.

**Contest Link: https://vjudge.net/contest**

**Required Knowledge:**

- STL in C, C++ or Java (Although we advise C++)
- Basic STL libraries: Array, Vector, Sorting, Map, Pair and Set.
- Some advance STL libraries: Stack, Queue, Ppriority Queue, Dequeue, etc.

**Resources:**

- C++ STL Documentation by NSUPS
- https://www.geeksforgeeks.org/the-c-standard-template-library-stl/
- https://www.topcoder.com/community/competitive-programming/tutorials/power-up-c-with-the-standard-template-library-part-1/
- https://www.hackerearth.com/practice/notes/standard-template-library/

**Requirements:** [Solve at least 60% of the problems from this section]

**Level 04 (Improve your implementation skill):**

Now you are ready to solve a little harder implementation problems. In order to solve these problems, you don’t need to know any algorithm or heavy knowledge. The problems are easy to approach but you need to code carefully. You may have to handle different type of corner cases while solving these problems. This will help you a lot to improve your coding skill.

**Contest Link: https://vjudge.net/contest**

**Required Knowledge:**

- Good implementation skills
- Learn how to handle corner cases
- Learn to keep your code simple
- Focus on the readability

**Resources:**

- The more problems you solve the more your implementation skills get improved.

**Requirements:** [Solve at least 50% of the problems from this section]

**Level 05 (Learn about string manipulations):**

This step also focuses on developing your implementation skills. The specialty of this section is that most of the problems you will encounter involve string. Using the String class of C++ which is enriched with many useful methods might come handy in implementing these problems. You should try to learn how to use those built-in functions to perform different types of operations very easily.

**Contest Link: https://vjudge.net/contest**

**Required Knowledge:**

- Learn how to take input and print a string
- Iterate through all the characters of the string
- Manipulate string using built-in functions
- Get familiar with substring, find, sorting and reverse operation of a string

**Resources:**

- https://cal-linux.com/tutorials/strings.html
- C++ STL Documentation by NSUPS (String section)
- http://www.cplusplus.com/reference/string/string/

**Requirements:** [Solve at least 50% of the problems from this section]

**Key Points:**

- We strictly maintain zero tolerance in honesty. Don’t copy paste the solution of your friends or from google. If we find you cheating (for any single problem) no matter how many problems you solve or how bright programmer you are, we won’t allow you in our bootcamp.
- In order to be competent for the boot camp, you need to solve at least 40-50 problems. Although we strongly advise giving your best try to solve at least 70-80 problems. During the selection process, your effort is the one that matters to us most.
- Don’t remain stuck on one problem for too long. If you cannot solve a particular problem, move on after spending a reasonable time behind it. Solve other problems and then come back to it later if there is enough time.
- The provided resources might not be enough for you. But you can always google and find thousands of other available resources which may seem more understandable to you.

## 3 thoughts on “How To Get Prepared For Bootcamp”

What are the passwords for vjudge contest?

The password is provided in the post.

Password: bootcampseason02

One has to complete step 1 to step 5 shown above to enter the bootcamp? I mean one has to know STL to enter?