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 A, B, C, max, cnt = 0;
  scanf("%d %d %d", &A, &B, &C);

  max = (A > B) ? ((A > C) ? A : C) : ((C > B) ? C : B);
  if (max - A >= 2) {
    cnt += (max - A) / 2;
    A += ((max - A) / 2) * 2;
  }
  if (max - B >= 2) {
    cnt += (max - B) / 2;
    B += ((max - B) / 2) * 2;
  }
  if (max - C >= 2) {
    cnt += (max - C) / 2;
    C += ((max - C) / 2) * 2;
  }
  switch ((max - A == 1) + (max - B == 1) + (max - C == 1)) {
  case 0:
    break;
  case 1:
    cnt += 2;
    break;
  case 2:
    cnt += 1;
    break;
  }
  printf("%d\n", cnt);

  return 0;
}