Отримання знань

дистанційна підтримка освіти школярів


Склоны и лестницы
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;
}

 

Попередня Зміст Наступна
В системі: гості - (); користувачі - (0)