Problem:
Score : 300 points

Problem Statement

You are given three integers A, B and C. Find the minimum number of operations required to make A, B and C all equal by repeatedly performing the following two kinds of operations in any order:

Choose two among A, B and C, then increase both by 1.

Choose one among A, B and C, then increase it by 2.

It can be proved that we can always make A, B and C all equal by repeatedly performing these operations.

Constraints

0 \leq A,B,C \leq 50

All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B C

Output

Print the minimum number of operations required to make A, B and C all equal.

Sample Input 1

2 5 4

Sample Output 1

2

We can make A, B and C all equal by the following operations:

Increase A and C by 1. Now, A, B, C are 3, 5, 5, respectively.

Increase A by 2. Now, A, B, C are 5, 5, 5, respectively.

Sample Input 2

2 6 3

Sample Output 2

5

Sample Input 3

31 41 5

Sample Output 3

23

Solution in C (GCC 5.4.1) (judge verdict: Accepted)

#include <stdio.h>

int main(void){
    
	int S[3]={0};
	scanf("%d %d %d", &S[0], &S[1], &S[2]);
	for (int i=1; i<3; i++) {
		int j=i;
		do {
		if (S[j] > S[j-1]) {
			int temp =S[j];
			S[j] = S[j-1];
			S[j-1] = temp;
			j--;
	    }
		else break;
		}while (j>0);
	}
	int count =0;
	if (S[0]==S[1]==S[2]) count=0; 
	if (S[0]==S[1] && S[1]>S[2]) {
		do {
			S[2]+=2;
			count +=1;
		}while (S[1]>S[2]);
		if (S[2]-S[1]==1) count +=1;
		if (S[2]-S[1]==0) count +=0;
	
	}
	if (S[0]> S[1]&& S[1]==S[2]) {
	    do {
			S[2]+=1;
	    	S[1]+=1;
			count +=1;
		}while (S[2]!=S[0]);
	}
	if (S[0]> S[1]&& S[1]>S[2]) {
	    do {
			S[2]+=1;
	    	S[1]+=1;
			count +=1;
		}while (S[1]!=S[0]);
		do {
			S[2]+=2;
			count +=1;
		}while (S[1] > S[2]);
		if (S[2]-S[1]==0) count +=0;
		else count+=1; 
		
	}
	printf("%d", count);
    return(0);
}