#include #include #include #define MAX_N 30 int n, k; char dir[MAX_N]; int read_case(void) { int i; char buf[1024]; scanf("%d", &n); if (!n) { return 0; } scanf("%d", &k); for (i = 0; i < n; i++) { scanf("%s", buf); dir[i] = buf[0]; } return 1; } int all_done(char *tossed) { int i; for (i = 0; i < n; i++) { if (!tossed[i]) { return 0; } } return 1; } void solve_case(void) { char tossed[MAX_N]; int from, to, temp; int num; memset(tossed, 0, MAX_N); from = 0; to = k-1; for (num = 0; !all_done(tossed); num++) { tossed[to] = 1; if (dir[to] == 'L') { if ((from - to + n) % n == 1) { /* comes from the left */ from = to; to = (to + n - 1) % n; } else { /* use normal rule */ temp = from; from = to; to = (temp + n - 1) % n; } dir[from] = 'R'; } else { if ((to - from + n) % n == 1) { /* comes from the right */ from = to; to = (to + 1) % n; } else { /* use normal rule */ temp = from; from = to; to = (temp + 1) % n; } dir[from] = 'L'; } } printf("Classmate %d got the ball last after %d tosses.\n", from+1, num); } int main(void) { while (read_case()) { solve_case(); } return 0; }