Team Formation: In a class, there are three types of students. C students are coders, M are mathematicians and X students have no specialization. The values of C, M and X are passed as the input to the program. The program must print the maximum number of perfect teams that can be formed from the students in the class. A perfect team includes at least one coder, at least one mathematician and it consists of exactly three members.
Boundary Condition(s):
0 <= C, M, X <= 10^9
Input Format:
The first line contains C, M and X separated by a space.
Output Format:
The first line contains the maximum number of perfect teams.
Example Input/Output 1:
Input:
4 4 1
Output:
3
Explanation:
The first team contains one coder, one mathematician and one student with no specialization. Then the remaining students in the three types are 3 3 0.
The second team contains two coders, one mathematician. Now the remaining students in the three types are 1 2 0.
The third team contains one coders, two mathematicians. Then the remaining students in the three types are 0 0 0.
Hence the output is 3
Example Input/Output 2:
Input:
1 0 2
Output:
0
#include <stdio.h>
#include <stdlib.h>
int main()
{
long int r,n,m,i,k,c=0;
scanf("%ld%ld%ld",&n,&m,&k);
r=(n<=m&&n<=k)?n:(m<=n&&m<=k)?m:k;
c+=r;
n-=r;
m-=r;
k-=r;
while((n>1||m>1)&&n>0&&m>0){
if(n>=m){
n-=2;
m--;
c++;
}
else if(n<=m){
m-=2;
n--;
c++;
}
}
printf("%ld",c);
}