diff options
Diffstat (limited to '1b.c')
-rw-r--r-- | 1b.c | 56 |
1 files changed, 0 insertions, 56 deletions
@@ -1,56 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - - -#define arrlen(x) (sizeof(x) / sizeof(x[0])) - - -long -checkmax(long * maxcals, long * maxelfs, int n, int cal, int elf) -{ - long i, j; - - for (i = 0; i < n; ++i) { - if (cal > maxcals[i]) { - if ((j = i + 1) < n) { - memmove(maxcals + j, maxcals + i, (n - j) * sizeof(long)); - memmove(maxelfs + j, maxelfs + i, (n - j) * sizeof(long)); - } - maxcals[i] = cal; - maxelfs[i] = elf; - break; - } - } - - return i; -} - - -int -main() -{ - char buf[BUFSIZ]; - long cal = 0, maxcal[3] = {0}, elf = 0, maxelf[3] = {0}; - - while (fgets(buf, sizeof(buf), stdin)) { - char * pbuf = buf; - long n; - if ((n = strtol(buf, &pbuf, 10)) == 0 && pbuf == buf) { - checkmax(maxcal, maxelf, arrlen(maxcal), cal, elf); - cal = 0; - ++elf; - } - else { - cal += n; - } - } - checkmax(maxcal, maxelf, arrlen(maxcal), cal, elf); - - printf("maxcal: %ld (elf: %ld/%ld/%ld)\n", - maxcal[0] + maxcal[1] + maxcal[2], - maxelf[0], maxelf[1], maxelf[2]); - - return 0; -} - |