#include #include #include /* Spielplan: 0 vs. 1: i1 : i2 0 vs. 2: i3 : i4 0 vs. 3: i5 : i6 1 vs. 2: i7 : i8 1 vs. 3: i9 : i10 2 vs. 3: i11 : i12 */ #define USAGE usage(argv[0]) void usage (char * p) { fprintf (stderr, "usage: %s target i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12\n", p); *(char*)0 = 0; } int games[6][2] = { { 0, 1 }, { 0, 2 }, { 0, 3 }, { 1, 2 }, { 1, 3 }, { 2, 3 }, }; int main (int argc, char ** argv) { int points[4]; int scored[4]; int diff[4]; int s[4] = {0,1,2,3}; int ints[12]; int i, g, target, change, tmp; char ch; if (argc != 14) USAGE; if (sscanf (argv[1], "%d%c", &target, &ch) != 1) USAGE; if (target < 0 || target >= 4) USAGE; for (i=0; i<4; ++i) { points[i] = scored[i] = diff[i] = 0; } g=0; for (i=0; i<12; ++i) { if (sscanf (argv[2+i], "%d%c", &ints[i], &ch) != 1) USAGE; if (ints[i] < 0 || ints[i] > 100) USAGE; } for (i=g=0; g<6; ++g,i+=2) { int t1 = games[g][0]; int t2 = games[g][1]; int g1 = ints[i]; int g2 = ints[i+1]; scored[t1] += g1; scored[t2] += g2; diff[t1] += g1-g2; diff[t2] += g2-g1; if (g1 > g2) { points[t1] += 3; } else if (g1 < g2) { points[t2] += 3; } else { points[t1]++; points[t2]++; } } change = 1; while (change) { change = 0; for (i=1; i<4; ++i) { if (points[s[i-1]] > points[s[i]]) continue; if (points[s[i]] > points[s[i-1]]) { tmp = s[i]; s[i] = s[i-1]; s[i-1] = tmp; change = 1; continue; } if (diff[s[i-1]] > diff[s[i]]) continue; if (diff[s[i]] > diff[s[i-1]]) { tmp = s[i]; s[i] = s[i-1]; s[i-1] = tmp; change = 1; continue; } if (scored[s[i-1]] > scored[s[i]]) continue; if (scored[s[i]] > scored[s[i-1]]) { tmp = s[i]; s[i] = s[i-1]; s[i-1] = tmp; change = 1; continue; } *(char*)0 = 0; } } exit (s[target]); }