#include <stdio.h> #include <stdbool.h> int FloorN, RoomN, Number[10007][107], Pos; bool HaveStair[10007][107]; int Res, RoomNum[10007][107], size[10007]; int main() { int i, j, cache; scanf("%d%d", &FloorN, &RoomN); for (i = 1; i <= FloorN; i++) for (j = 0; j < RoomN; j++) { scanf("%d%d", &HaveStair[i][j], &Number[i][j]); if (HaveStair[i][j]) RoomNum[i][size[i]++] = j; } scanf("%d", &Pos); for (i = 1; i <= FloorN; i++) { cache = 0; Res = (Res + Number[i][Pos]) % 20123; for (j = Pos; j < RoomN; j++) if (HaveStair[i][j]) cache++; Pos = RoomNum[i][(Number[i][Pos] - cache - 1 + size[i]) % size[i]]; } printf("%d\n", Res); return 0; } /************************************************************** Problem: 2311 User: admin Language: C Result: Accepted Time:952 ms Memory:10596 kb ****************************************************************/