day01.c (1101B)
1 #include <stdio.h> 2 #include "cputime.h" 3 4 #define DIAL 100 5 6 int main(void) { 7 int cur = 50; 8 int p1 = 0; 9 int p2 = 0; 10 char dir = 0; 11 char buf[4] = {0}; 12 int bufl = 0; 13 int cnt = 0; 14 for (int c=getchar();c!=EOF;c=getchar()) { 15 if (c=='L'||c=='R') { 16 dir = c; 17 cnt = 0; 18 } else if (c>='0'&&c<='9') { 19 buf[bufl++] = c-'0'; 20 } else if (c=='\n') { // sscanf() felt slow 21 for (int i=0;i<bufl;++i) { 22 cnt = cnt*10+buf[i]; // reinventing atoi 23 } 24 if (cnt>=DIAL) { 25 p2 += cnt/DIAL; 26 cnt = cnt%DIAL; 27 } 28 if (dir=='L') { 29 if (cur&&cnt>cur) p2++; 30 cur -= cnt; 31 if (cur<0) cur=DIAL+cur; 32 } else if (dir=='R') { 33 if (cur+cnt>DIAL) p2++; 34 cur += cnt; 35 if (cur>=DIAL) cur = cur-DIAL; 36 } 37 if (cur==0) { p1++; p2++; } 38 bufl = cnt = 0; 39 } 40 } 41 printf("p1: %d\np2: %d\n", p1, p2); 42 return 0; 43 }