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: Wrong Answer)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int cmp(const void *a,const void *b){
  return *(int*)b -*(int*)a;
}

int main(){
  int i,j;
  int x[3];
  int e[3];
  int top;
  int sum=0;
  int even=0;
  for(i=0;i<3;i++){
    scanf("%d",&x[i]);
  }
  if(x[0]==x[1]&&x[1]==x[2]&&x[2]==x[0]){
    puts("0");
    return 0;
  }

  qsort(x,3,sizeof(int),cmp);

  for(i=0;i<3;i++){
    if(x[i]%2==0) {
      even++;
      e[i]=0;
    }
    else e[i]=1;
  }

  if(e[0]!=e[1]&&e[0]!=e[2]){
    top=1;
  }

  if(even==0||even==3){
    sum+=(x[0]-x[1]+x[0]-x[2])/2;
  }
  else if (top){
    sum+=(x[0]-x[1]+x[0]-x[2])/2;
  }
  else {
    sum+=ceil((double)((x[0]-x[1]))/2);
    sum+=ceil((double)((x[0]-x[2]))/2);
    sum++;
  }

  printf("%d",sum);

  return 0;
}