| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
水题,为什么通过率这么低?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
int die[1001];
int dn;
int pos[10];
int pn;
int chute[101];
int ladder[101];
int magic[101];
int get_magic[10];
int main()
{
int temp;
int a, b;
dn = 0;
while (scanf("%d", &temp) && temp)
{
die[dn++] = temp;
}
while (scanf("%d", &pn))
{
if (pn == 0)
{
break;
}
scanf("%d", &a);
memset(chute, 0, sizeof(chute));
memset(ladder, 0, sizeof(ladder));
memset(magic, 0, sizeof(magic));
memset(get_magic, 0, sizeof(get_magic));
memset(pos, 0, sizeof(pos));
scanf("%d", &b);
if (a > b)
{
ladder[a] = b;
}
else
{
chute[a] = b;
}
while (scanf("%d", &a) && scanf("%d", &b) && a + b)
{
if (a > b)
{
ladder[a] = b;
}
else
{
chute[a] = b;
}
}
while (scanf("%d", &temp) && temp)
{
if (temp < 0)
{
magic[-temp] = -1;
}
else
{
magic[temp] = 1;
}
}
int pj = 0;
for (int i = 0; i < dn; ++i)
{
while (get_magic[pj] != 0)
{
pj = (pj + 1) % pn;
}
//走步
if (pos[pj] + die[i] == 100)
{
break;
}
else if (pos[pj] + die[i] < 100)
{
pos[pj] += die[i];
}
//解除魔法
/*memset(get_magic, 0, sizeof(get_magic));*/
bool fg = true;
for (int j = 0; j < pn; ++j)
{
if (get_magic[j])
{
get_magic[j]--;
}
}
for (int j = 0; j < pn; ++j)
{
if (get_magic[j] == 0)
{
fg = false;
break;
}
}
if (fg)
{
for (int j = 0; j < pn; ++j)
{
get_magic[j]--;
}
}
//
if (chute[pos[pj]])
{
pos[pj] = chute[pos[pj]];
}
else if (ladder[pos[pj]])
{
pos[pj] = ladder[pos[pj]];
}
//
if (magic[pos[pj]] == 1)
{
continue;
}
else if (magic[pos[pj]] == -1)
{
get_magic[pj] = 2;
}
pj = (pj + 1) % pn;
//
}
printf("%d\n", pj + 1);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator