http://acm.pku.edu.cn/JudgeOnline/problem?id=1059

Код:
#include <string.h>
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
int main() {
	int i,j, k,N, extra, won;
	int board[101];
	int pos[6], miss[6];
	int throws[1000];
	for (i=0,j=1;j>0;j=throws[i],i++) scanf("%d",&throws[i]);
	do {
for (i = 0;i <= 100;i++) board[i] = 0;
for (i = 0;i < 6;i++) miss[i] = pos[i] = 0;
scanf("%d",&N);
if (N == 0) break;
for (;;) {
	scanf("%d%d",&i,&j);
	if (i == 0) break;
	board[i] = 100 + j;
}
for (;;) {
	scanf("%d",&i);
	if (i == 0) break;
	board[abs(i)] = i/abs(i);
}
for (i = j = 0;;i=(++i)%N) {
	if (miss[i]) miss[i] = 0;
	else do {
extra = won = 0;
k = throws[j++];
if (pos[i] + k == 100) {
	won = 1;
	break;
}
if (pos[i] + k < 100) {
	pos[i] += k;
	if (board[pos[i]] > 100) pos[i] =
board[pos[i]] - 100;
	else if (board[pos[i]] < 0) miss[i] = 1;
	else if (board[pos[i]] > 0) extra = 1;
}
	} while (extra);
	if (won) break;
}
printf("%d\n",i + 1);
	} while(1);
	return 0;
}