Click here to Skip to main content
15,901,122 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Problem Statement

There are N students in a school with different capabilities.

Sports teacher wants to form some teams of these students following the rule: Each team can have either 1 or 2 students.

Capability score of each team is the sum of the capabilities of each student in that particular team.

Since the teacher believes in equality, he wants to form the teams such that the difference between capability scores of the teams with highest capability score and the lowest capability score should be minimized.

Note: The teacher can form any number of teams



1 ≤ N ≤ 5*10^3

-10^9 ≤ Ci ≤ 10^9


Input Format

The first line contains an integer N denoting number of students.

Second line contains N integers, separated by space, denoting capabilities of each student (Ci).


Output Format

A single integer denoting the difference between maximum capability score and minimum capability scores among all teams.


Sample Input


2 6 3


Sample Output



Explanation of Sample

Most optimal way is to form two teams of [2, 3] and [6].
Here, the capability scores of two teams will be 5 and 6 respectively.
Hence, the team with maximum score = 6 and the team with lowest score = 5.
Difference = 1
This is the minimal difference that we can achieve in this case.


Things to Note for the Candidate

You can use your own IDE like Visual Studio Code, Eclipse or any other IDE that you are comfortable with to build your solution code.
The IDE provided on the platform is purely for submission. Avoid using the IDE for coding out the solution.
Test against any custom input in your own IDE. In the IDE provided on the platform, you cannot pass custom test cases and see the output. 
Use standard input and standard output in your program for the IDE to run the test cases smoothly against your code. We are giving a sample problem statement along with a solution that will pass the test cases in the IDE. - Sample Problem Statement  (Right Click and Open in New Tab to view.)

What I have tried:

3x3 matrix
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
# 3x4 matrix
Y = [[5,8,1,2],
# result is 3x4
result = [[0,0,0,0],

# iterate through rows of X
for i in range(len(X)):
   # iterate through columns of Y
   for j in range(len(Y[0])):
       # iterate through rows of Y
       for k in range(len(Y)):
           result[i][j] += X[i][k] * Y[k][j]

for r in result:
Updated 17-May-22 21:42pm

How do I calculate team score

First step is to try to solve the problem.
Your code is the correct answer to another question, it is not even remotely related to the question.

Your question is a do my homework for me, you forgot to say it is urgent too.

You are learning and homework is training, nobody can do it for you.
Do you think Usain Bolt asked someone to train for him when he was a beginner ?

You show no attempt to solve the problem yourself, you have no question, your main effort is pasting the requirement, you just want us to do your HomeWork.
HomeWork problems are simplified versions of the kind of problems you will have to solve in real life, their purpose is learning and practicing.

Take a sheet of paper and a pencil. Use your brain and solve the problem by hand. Since Harry Potter didn't gave you the solution, there is no magic, and the solution didn't jump to your face.
You solved the problem by following a procedure, that procedure is your algorithm. You need to write down the steps in a mechanical manner (computer like). The program will follow those steps.

We do not do your HomeWork.
HomeWork is not set to test your skills at begging other people to do your work, it is set to make you think and to help your teacher to check your understanding of the courses you have taken and also the problems you have at applying them.
Any failure of you will help your teacher spot your weaknesses and set remedial actions.
Any failure of you will help you to learn what works and what don't, it is called 'trial and error' learning.
So, give it a try, reread your lessons and start working. If you are stuck on a specific problem, show your code and explain this exact problem, we might help.

As programmer, your job is to create algorithms that solve specific problems and you can't rely on someone else to eternally do it for you, so there is a time where you will have to learn how to. And the sooner, the better.
When you just ask for the solution, it is like trying to learn to drive a car by having someone else training.
Creating an algorithm is basically finding the maths and make necessary adaptation to fit your actual problem.

The idea of "development" is as the word suggests: "The systematic use of scientific and technical knowledge to meet specific objectives or requirements."[^]
That's not the same thing as "have a quick google and give up if I can't find exactly the right code".
Share this answer
Share this answer

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900