Hours to prove your mettle
USD in prize money
Global Ranking List to top coders
About Us
Get ready to unlock the world of programming excitement with CodeVita! It's more than just a contest; it's a vibrant culture that brings people from diverse backgrounds and cultures together, shattering physical and cultural boundaries. At TCS, we believe that programming is a thrilling adventure, and that's why we created CodeVita!
Started in 2012 in India, this coding extravaganza aimed to showcase the countless applications of coding while identifying brilliant programming talent. The overwhelming response from the first two domestic seasons fueled our ambition, and in 2014, we proudly went global. The inaugural global edition featured 6 teams in the finals, proving that CodeVita had become a truly global phenomenon.
Fast forward to Season 10, and we witnessed a jawdropping 3,05,000+ registrations from 87 countries, representing over 3500 institutes. Imagine participants from 10 regions engaging in a thrilling battle during the grand finale! Are you intrigued? Brace yourself for more exhilarating programming challenges and unforgettable experiences with CodeVita!
What's in it for students?
 Top 3 coders to win total prize money of USD 20,000/
 Chance to explore exciting careers^{*} with one of the world's most powerful brands
 Chance to compete with some of the best coders in the world
 Platform to showcase your programming skills
 Finalists stand a chance to travel^{**} to India for the season 11 live grand finale experience.
^{*}as applicable in the respective geographies
^{**}subject to TCS guidelines
Eligibility
 With year of completion 2024, 2025, 2026, and 2027.
 From institutes across the globe.
 Pursuing undergraduate/diploma/postgraduate disciplines from engineering/science background with any specialization.
The Journey
Journey of a thousand miles begins with one step.
Registration
The first step in your CodeVita journey. Click on the register button to get started.
MockVitas
MockVitas are just like actual rounds to give you a demo of the actual contest.
Rounds
Clear the Actual Rounds to move further in your CodeVita journey.
Finale
Win prize money and prove that you are the best coder.
Sample Questions
A solid cube of 10 cm x 10cm x 10 cm rests on the ground. It has a beetle on it, and some sweet honey spots at various locations on the surface of the cube. The beetle starts at a point on the surface of the cube, and goes to the honey spots in order along the surface of the cube.
Problem Description
A solid cube of 10 cm x 10cm x 10 cm rests on the ground. It has a beetle on it, and some sweet honey spots at various locations on the surface of the cube. The beetle starts at a point on the surface of the cube, and goes to the honey spots in order along the surface of the cube.
1. If it goes from a point to another point on the same face (say X to Y), it goes in an arc of a circle that subtends an angle of 60 degrees at the centre of the circle
2. If it goes from one point to another on a different face, it goes by the shortest path on the surface of the cube, except that it never travels along the bottom of the cube
The beetle is a student
of Cartesian geometry, and knows the coordinates (x, y, z) of
all the points it needs to go to. The
origin of coordinates it uses is one corner of the cube on
the ground, and the z axis points up. Hence,
the bottom surface (on which it does not crawl) is z=0, and
the top surface is z=10. The beetle keeps
track of all the distances travelled, and rounds the distance
travelled to two decimal places once it reaches the next
spot, so that the final distance is a sum of the rounded
distances from spot to spot.
Input
The first line gives an integer N, the total number of points (including the starting point) the beetle visits
The second line is a set of 3N comma separated nonnegative numbers, with up to two decimal places each. These are to be interpreted in groups of three as the x, y, z coordinates of the points the beetle needs to visit in the given order.
Output
One line with a number giving the total distance travelled by the beetle accurate to two decimal places. Even if the distance travelled is an integer, the output should have two decimal places.
Constraints
None of the points the beetle visits is on the bottom face (z=0) or on any of the edges of the cube (the lines where two faces meet)
2<=N<=10
Difficulty Level
Complex
Time Limit (secs)
1
Examples
Example 1
Input
3
1,1,10,2,1,10,0,1,9
Output
4.05
Explanation
There are three points visited by the beetle (N=3). The beetle starts on the top face of the cube (z=10) at point (1,1,10) and goes to another point on the same face (2,1,10). Though the straight line distance is 1, it travels on the arc of a circle subtending an angle of 60 degrees at the centre of the circle, and hence travels (2*pi)/6 or 1.05 (note that it rounds the distance at each leg of the journey). It then travels from (2,1,10) on the face z=10 to (0,1,9) on the face x=0 along the surface of the cube. This is a distance of 3. The total distance travelled is 1.05+3=4.05. The output is 4.05
Example 2
Input
3
1,1,10,2,1,10,0,5,9
Output
6.05
Explanation
There are three points visited by the beetle (N=3). The beetle starts on the top face of the cube (z=10) at point (1,1,10) and goes to another point on the same face (2,1,10). As before. This distance is 1.05. It then travels from (2,1,10) on the face z=10 to (0,5,9) on the face x=0 along the surface of the cube. The shortest distance on the surface of the cube between these points is 5. The total distance travelled is 1.05+5=6.05. The output is 6.05.
The parcel section of the Head Post Office is in a mess. The parcels that need to be loaded to the vans have been lined up in a row in an arbitrary order of weights. The Head Post Master wants them to be sorted in the increasing order of the weights of the parcels, with one exception. He wants the heaviest (and presumably the most valuable) parcel kept nearest his office.
Problem Description
The parcel section of the Head Post Office is in a mess. The parcels that need to be loaded to the vans have been lined up in a row in an arbitrary order of weights. The Head Post Master wants them to be sorted in the increasing order of the weights of the parcels, with one exception. He wants the heaviest (and presumably the most valuable) parcel kept nearest his office.
You and your friend try to sort these boxes and you decide to sort them by interchanging two boxes at a time. Such an interchange needs effort equals to the product of the weights of the two boxes.
The objective is to reposition the boxes as required with minimum effort.
Input
The first line consists of two space separated positive integers giving the number of boxes (N) and the position of the Head Post Master’s office (k) where the heaviest box must be.
The second line consists of N space separated positive integers giving the weights of the boxes. You may assume that no two weights are equal.
Output
The output is one line giving the total effort taken to get the boxes in sorted order, and the heaviest in position k.
Constraints
N<=50
Weights <= 1000
Difficulty Level
Complex
Time Limit (secs)
1
Examples
Example 1
Input
5 2
20 50 30 80 70
Output
3600
Explanation
There are 5 boxes (N=5) and the heaviest box must be in position 2 (k=2). If we look at the final order (sorted, with the heaviest at position 2), it should be 20 80 30 50 70. If we look at this, we notice that only the 50 and the 80 parcels need to be exchanged. As this takes effort of the product of the weights, the effort is 4000.
Further reduction can be obtained if we use the smallest package (20) as an intermediary. If we exchange 20 with 50 (effort 1000), then with 80 (effort 1600) and back with 50 again (effort 1000), the effect is the same, with a total effort of 3600 (less th an the effort obtained by the direct move)an the effort
The results after the optimal sequence of exchanges are
50 20 30 80 70
50 80 30 20 70
20 80 30 80 70
As this takes an effort of 3600, the output is 3600.
Example 2
Input
6 3
30 20 40 80 70 60
Output
7600
Explanation
There are 6 parcels, and the heaviest should be at position 3. Hence the final order needs to be 20 30 80 40 60 70. If we look at the initial position, we see that 20 and 30 need to be exchanged (effort 600), 40 and 80 need to be exchanged (effort 3200) and 60 and 70 need to be exchanged (effort 4200). Hence the total effort is 600+3200+4200=8000.
If we use the same approach as in Example 1, we get the following efforts
(600) 20 30 40 80 70 60
(3200) 20 30 80 40 70 60
(1200) 60 30 80 40 70 20
(1400) 60 30 80 40 20 70
(1200) 20 30 80 40 60 70
A total effort of 7600 is obtained rather than an effort of 8000, which is the output.
It is the sports event of the year for the residents of Sportsville. Their team had finally made it to the finals of the Bowls League Cup.
Problem Description
It is the sports event of the year for the residents of Sportsville. Their team had finally made it to the finals of the Bowls League Cup.
They have booked tickets for the city contingent for the same row, and the size of the contingent (N) is smaller than the number of seats booked(S).Unfortunately, there was rain the previous night and some of the seats are still wet. Some of the contingent love Bowls so much and are excited enough not to mind sitting on a wet chair. There are k of these. However, others want to sit on a dry seat so that they can enjoy the match more.
The contingent wants to minimize the distance between the first and last person in the row so that they can still conduct Mexican Waves, and other forms of support for their team.
Because they want to sit together, any block of 15 or more contiguous unoccupied seats between the first person sitting and the last person sitting is unacceptable.
There are M blocks of seats, starting with a dry block, with alternating wet and dry blocks. The number of seats in each block is known.
Given S (the number of seats in the row), N (the size of the
contingent),k (the number of the contingent who are willing to
sit in a wet seat), and the distribution of wet and dry
blocks, write a program to find the minimum distance between
the first and the last member of the contingent in the row.
Input
The first line contains four comma separated numbers representing S, N, k and M respectively.
The second line is a set of M comma separated numbers representing the number of seats in each block of seats. The first block is dry, and the remaining blocks alternate between wet and dry.
Output
One integer representing the minimum distance between the first and last member of the row. If it is impossible to seat all the members according to their preferences,and with the unoccupied seat restriction, the result should be 0.
Constraints
S,N,k < 1000, M < 30
Difficulty Level
Complex
Time Limit (secs)
1
Examples
Example 1
Input
100,50,5,6
3,10,30,5,30,22
Output
49
Explanation
S = 100, and there are 100 seats in the row. N=50, and there are 50 members in the contingent. k=5, and 5 people (out of the 50) do not mind sitting on wet seats. M=6, and there are 6 blocks of seats. The number of seats in each block is 3,10,30,5,30 and 22, with the first block of 3 seats being dry, the next 10 being wet and so on.
One possible positioning to achieve the minimum distance is to place the a set of 30 people in seats 14 to 43 (the dry block), the 5 people who do not mind sitting on wet seats in the wet block 44 to 48, and the remaining 15 people (of the 50) in the seats 49 to 63. There is no unoccupied seat between the first person and the last person, and so this is acceptable.The distance between the last allocated seat (63) and the first allocated seat (14), is 49. This is the output.
Example 2
Input
100,50,5,8
3,7,10,10,20,10,20,20
Output
64
Explanation
S = 100, and there are 100 seats in the row. N=50, and there are 50 members in the contingent. k=5, and 5 people (out of the 50) do not mind sitting on wet seats. M=8, and there are 8 blocks of seats.
One possible positioning is to have a set of 10 people sit in the dry block 11 – 20, the 5 people who will accept wet seats in seats 21 – 25 (in the wet block 21 – 30), another 20 people in the dry block 31 – 50, leave the wet block 5160 empty, and seat the remaining 15 people in seats 61 – 75 (in the dry block 6180. There is a block of 5 unoccupied seats (2630) between the first person and the last person. As this is not more than 15, this is acceptable. The distance from the last allocated seat (75) and the first allocated seat (11) is 64. This is the result.
A cylindrical water cistern was built in an apartment complex in Aquatown. The bottom rests on concrete and is not accessible. It has a height h and a radius r.
Problem Description
A cylindrical water cistern was built in an apartment complex in Aquatown.
The bottom rests on concrete and is not accessible. It has a height h and a radius r,
A mathematical bug is sitting on the cistern at point A, and has established a coordinate system to cover the entire accessible area. The bug is sitting a distance s from the top of the cistern, and the nearest point at the top is B.
For a point C on the curved surface, the nearest point D on the top is determined, and the distance CD is taken as t. The angle p (in degrees) subtended at the centre of the circle E by the arc BD is measured (in a counterclockwise manner). The coordinates of C are taken as the pair (t,p), with t being greater than 0 and less than h, and with p being between 0 and 359 (inclusive).
For a point on the top surface, F, the distance to the centre E is taken (a), and the counterclockwise angle (in degrees) between EF and EB is taken. The coordinates of the point F are then taken as (a,q). The value of a is between 0 and r, and the value of q is between 0 and 359.
All coordinates are integers, and if the point is on the top surface of the cylinder, the first coordinate is negative, and if it is on the curved surface of the cylinder, the first coordinate is positive.
From its staring point A, the bug needs to go to its destination, which is a point (like C or F) either on the curved surface or the top surface. The coordinates of the destination are given. The bug would like to go by the shortest path to its destination.
The goal is to determine the length of the shortest path the bug can take.
Input
The first line has three comma separated positive integers giving r (the radius), h (the height of the cylinder) and s (the distance from the top of the starting point of the bug)
The next line has two comma separated integers (d and g) giving the coordinates of the destination. If the first integer (d) is negative, it is on top surface of the cylinder, and else it is on the curved surface of the cylinder
Output
The output is a single integer giving the shortest distance that the bug can travel. The computed distance must be rounded to the nearest integer
Constraints
40<s<=h<10000
r<100
0<=g<=359
If d is negative, d > r
If d is positive, d < h
Difficulty Level
Complex
Time Limit (secs)
1
Examples
Example 1
Input
100,500,200
200,180
Output
314
Explanation
The value of r is 100, and h is 500. The distance of the bug from the top surface is 200.
The coordinates of the destination are (200,180). As the first coordinate is 200, the destination is on the curved surface (like point C), and at the same distance from the top surface as the bug. As the second coordinate is 180, the destination is exactly on the other side of the cylinder at the same height as the bug, The distance is half the circumference of the cylinder, or 314. This is the output.
Example 2
Input
100,500,200
50,180
Output
350
Explanation
The value of r is 100, and h is 500. The distance of the bug from the top surface is 200.
The coordinates of the destination are (50,180). As the first coordinate is negative (50), the point is on the top surface of the cylinder (like point F), and EF is 50. As the second coordinate is 180, BEF is a straight line. The distance travelled is AB + BE + EF = 200 + 100 + 50=350. This is the output.
In the theory of numbers, square free numbers have a special place. A square free number is one that is not divisible by a perfect square (other than 1).
Problem Description
In the theory of numbers, square free numbers have a special place. A square free number is one that is not divisible by a perfect square (other than 1). Thus 72 is divisible by 36 (a perfect square), and is not a square free number, but 70 has factors 1, 2, 5, 7, 10, 14, 35 and 70. As none of these are perfect squares (other than 1), 70 is a square free number.
For some algorithms, it is important to find out the square free numbers that divide a number. Note that 1 is not considered a square free number.
In this problem, you are asked to write a program to find the number of square free numbers that divide a given number.
Input
The only line of the input is a single integer N which is divisible by no prime number larger than 19
Output
One line containing an integer that gives the number of square free numbers (not including 1)
Constraints
N < 10^9
Difficulty Level
Simple
Time Limit (secs)
1
Examples
Example 1
Input
20
Output
3
Explanation
N=20
If we list the numbers that divide 20, they are
1, 2, 4, 5, 10, 20
1 is not a square free number, 4 is a perfect square, and 20 is divisible by 4, a perfect square. 2 and 5, being prime, are square free, and 10 is divisible by 1,2,5 and 10, none of which are perfect squares. Hence the square free numbers that divide 20 are 2, 5, 10. Hence the result is 3.
Example 2
Input
72
Output
3
Explanation
N=72. The numbers that divide 72 are
1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72
1 is not considered square free. 4, 9 and 36 are perfect squares, and 8,12,18,24 and 72 are divisible by one of the. Hence only 2, 3 and 6 are square free. (It is easily seen that none of them are divisible by a perfect square). The result is 3
Given N number of x's, perform logic equivalent of the above Java code and print the output
Problem Description
Scanner sc = new Scanner(System.in);
long sum = 0;
int N = sc.nextInt();
for (int i = 0; i < N; i++) {
final long x = sc.nextLong(); // read input
String str = Long.toString((long) Math.pow(1 << 1, x));
str = str.length() > 2 ? str.substring(str.length()  2) : str;
sum += Integer.parseInt(str);
}
logger.debug(sum%100);
Given N number of x's, perform logic equivalent of the above Java code and print the output
Input
First line contains an integer N
Second line will contain N numbers delimited by space
Output
Number that is the output of the given code by taking inputs as specified above
Constraints
1<=N<=10^7
0<=x<=10^18
Difficulty Level
Simple
Time Limit (secs)
1
Examples
Example 1
Input
4
8 6 7 4
Output
64
Example 2
Input
3
1 2 3
Output
14
Given a n*n Array matrix (A) with A[0][0] element as the starting point and any one element as the destination.
Problem Description
Given a n*n Array matrix (A) with A[0][0] element as the
starting point and any one element as the destination. Find
the destination and print the route map.
Rules:
1. Array Matrix with n*n elements such that n >=2 and
n<=10.
2. Starting point A[0][0] value will be 'A'.
3. Destination value will be 'D'
4. There will
be always 1 continuous route which can be straight or
diagonal.
5. There are 4 types of hurdles and
corresponding values :
a. Stone denoted by 'S'
b. Wall denoted by 'L'
c. Water denoted by 'W'
d. Thorn denoted by 'T'
6. Music provides mind peace.
Which will be denoted by 'M'. It is not a hurdle.
7.
The value of route will be 'R'.
Input
First Line contains dimension N of Matrix A.
Next N Lines, each contains N values delimited by space
Output
At every Step print the surrounded hurdles in ascending order of values. i.e. for every 'R' print the surrounding hurdles.
If there are no hurdled around step in the route, print 'NO HURDLES' for that step.
On reaching destination print 'DESTINATION'
Music 'M' is not a hurdle. It should not be included in output.
Constraints
2 <= N <= 20
Difficulty Level
Simple
Time Limit (secs)
1
Examples
Example 1
Input
4
A S L D
T R W R
R M S
R
W R R M
Output:
L S S T W
T W
S W
S
S W
L S W
DESTINATION
Example 2
Input:
5
A S L W M
R S L D T
M R T R M
T L R M S
S L S W T
Output:
S S
L L S T T
L L S T W
L S T T
DESTINATION
Gallery
Frequently Asked Questions
In doubt? Don't worry! Check out our Frequently Asked Questions enclosed below.

How do I register and login for the contest?
Kindly refer to this blog for step by step registration process.

Can I go back to the welcome page after starting to answer the coding problems?
Yes, you can go back to the welcome page after starting to answer the coding problems.

Do I have to attempt the questions in serial order?
No, you do not have to attempt the questions in any order.

Where can I see the list of languages and compilers with their version?
After login, you can check the languages and their respective compiler/interpreter version under the 'Compilers & Interpreters' tab.

If I move to question no. 2 without submitting question 1, does the timer continue for Question 1?
Yes, the timer will continue for Question 1.

If I have referred/used a code from the internet, do I have to declare the same?
Yes, before you submit your code, you will get an option  "I would like to provide attribution to the following sources". Select this option before submitting. You are free to refer to other material, but you need to declare the source code.

Where can I check the status of questions submitted by me?
For Private test cases  in "Private Testcase Submissions" tab and for Public test cases  in "Public Testcase Submission" tab.

If I close my browser will the codes written be saved on the system?
No, if you close your browser, you will lose your work. You should ensure that all submitted code is saved in your local file system as well.

How long before a session will expire?
If you are not active on the system for more than 15 minutes, the session will expire.

I closed my browser without logging out. I am unable to login.
Your session is still live on CodeVita servers if you do not logout. Hence you will get an 'User already logged in' message. Your session will expire after 15 minutes of inactivity after which you will be able to login again.

What is the purpose of Code Attribution?
If a website or an URL has been useful in arriving at a solution to CodeVita problem, then it is imperative that the precise source be cited. Please give precise URL(s) of all code used. If a precise URL is not provided, the code might be considered plagiarized.

What do different answer statuses mean?
Please refer this link