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>
#include<stdlib.h>
int main()
{
	int a, b, c, t;
	int  j = 0;
	int  temp;
	scanf("%d%d%d", &a, &b, &c);
	if (a == b && b == c)
		printf("0");
	if ((a == b && a != c) || (a == c && a != b) || (b == c && a != b))
	{
		if (a > b)
		{
			t = a; a = b; b = t;
		}
		if (b > c)
		{
			t = b; b = c; c = t;
		}
		if (a > b)
		{
			t = a; a = b, b = t;
		}
		if (c == b)
		{
			if ((c - a) % 2 != 0)
			{
				temp = (c - a + 1) / 2;
				temp = temp + 1;
				printf("%d", temp);
			}
			else
				printf("%d", (c - a) / 2);
		}
		if (a == b)
		{
			printf("%d", c - a);
		}
	}
	if (a != b && a != c && b != c)
	{
		if (a>b)
		{
			t = a; a = b; b = t;
		}
		if (b>c)
		{
			t = b; b = c; c = t;
		}
		if (a>b)
		{
			t = a; a = b, b = t;
		}
		for (a; b < c; b++)
		{
			a++;
			j++;
		}
		if ((c - a) % 2 != 0)
		{
			j = j + (c - a + 1) / 2;
			j = j + 1;
			printf("%d", j);
		}
		else
		{
			j = j + (c - a) / 2;
			printf("%d", j);
		}
	}
	return 0;
}