/* Skrevet av Dag Langmyhr (dag@ifi.uio.no) til NM i programmering 2000. */ #include #include #define DEBUG int p[201], d[201], cur[21], best[21], best_sum_p, best_sum_d, m, n; int better(int diff1, int diff2, int sum1, int sum2) { int i; /* Is (diff1,sum1) a better solution than (diff2,sum2)? */ if (abs(diff1) != abs(diff2)) return abs(diff1)abs(sum2); for (i = 1; i <= m; ++i) { if (cur[i] != best[i]) return cur[i] 0) { for (i = 1; i <= n; ++i) fscanf(in_f, "%d%d", &p[i], &d[i]); best_sum_p = 99999; best_sum_d = 0; test(0, 0, 1, 0); fprintf(out_f, "Jury #%d\n", ++n_juries); fprintf(out_f, "Best jury has value %d for prosecution\nand %d for defence:\n", best_sum_p, best_sum_d); for (i = 1; i <= m; ++i) fprintf(out_f, " %d", best[i]); fprintf(out_f, "\n\n"); fscanf(in_f, "%d%d", &n, &m); } fclose(in_f); fclose(out_f); return 0; }