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>
#include <string.h>
#include <math.h>

#define LINE_BUF_SIZE 256

int main(){

    int M,N,A,B,C,A_,B_,C_;
    int i,j,k;
    char line[LINE_BUF_SIZE];

    fgets(line,sizeof(line),stdin);
    sscanf(line,"%d %d %d", &A_,&B_,&C_);

    int count = 0;

    if(A_ >= B_ && B_ >= C){
        A = A_;
        B = B_;
        C = C_;
    }

    if(A_ >= B_ && C_ >= B_){
        A = A_;
        B = C_;
        C = B_;
    }

    if(B_ >= A_ && A_ >= C_){
        A = B_;
        B = A_;
        C = C_;
    }

    if(B_ >= C_ && C_ >= A_){
        A = B_;
        B = C_;
        C = A_;
    }

    if(C_ >= B_ && B_ >= A_){
        A = C_;
        B = B_;
        C = A_;
    }

    if(C_ >= A_ && A_ >= B_){
        A = C_;
        B = A_;
        C = B_;
    }
    
        if((A-B) % 2 == 0 && (A-C) % 2 == 0){
            count += (A - B) / 2;
            count += (A - C) / 2 ;
            printf("%d",count);
            return 0;
        }
        else if((A-B) % 2 == 0 && (A-C) % 2 != 0){
            count += (A - B) / 2;
            count += (A - C) / 2 + 2;
            printf("%d",count);
            return 0;
        }
        else if((A-B) % 2 != 0 && (A-C) % 2 == 0){
            count += (A - B) / 2  + 2;
            count += (A - C) / 2;
            printf("%d",count);
            return 0;
        }        
        else if((A-B) % 2 != 0 && (A-C) % 2 != 0){
            count += (A - B) / 2;
            count += (A - C) / 2 + 1;
            printf("%d",count);
            return 0;
        }

    return 0;

}