Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
Register

## WA炸 求解 代码凌乱勿喷

Posted by hanyuweining at 2017-05-18 13:38:55 on Problem 1059
```#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;

int go[101],n,pawn[7];
bool missa[101],extra[101];
int a[1001],win,set[7];

void play()
{
int i,j;
i=-1;
set[1]=set[2]=set[3]=set[4]=set[5]=set[6]=1;
while(win==0)
{
for(j=1;j<=n;j++)
{
if(set[j]!=0)
{
if(pawn[j]+a[i+j]<=100)
{
pawn[j]+=a[i+j];
}
if(pawn[j]==100)
{
win=j;
return;
}
pawn[j]=go[pawn[j]];
if(pawn[j]==100)
{
win=j;
return;
}

}
else
{
set[j]=1;
continue;
}

if(set[j]==2)
{
i++;
if(pawn[j]+a[i+j]<=100)
{
pawn[j]+=a[i+j];
}
if(pawn[j]==100)
{
win=j;
return;
}
pawn[j]=go[pawn[j]];
if(pawn[j]==100)
{
win=j;
return;
}
set[j]=1;
}

if(missa[pawn[j]]==true)
set[j]=0;
else if(extra[pawn[j]]==true)
set[j]=2;
}
i+=n;
}
}

int main()
{
int p;
p=0;
scanf("%d",&a[p]);
while(a[p]!=0)
{
p++;
scanf("%d",&a[p]);
}
p++;

scanf("%d",&n);
while(n!=0)
{
int i;
for(i=0;i<=100;i++)
{
go[i]=i;
}
scanf("%d",&i);
scanf("%d",&go[i]);
while(i!=0||go[i]!=0)
{
scanf("%d",&i);
scanf("%d",&go[i]);
}
int b;
scanf("%d",&b);
while(b!=0)
{
if(b<0)
{
missa[-b]=true;
}
else
{
extra[b]=true;
}
scanf("%d",&b);
}
win=0;
play();
printf("%d\n",win);
memset(missa,0,sizeof(missa));
memset(extra,0,sizeof(extra));
scanf("%d",&n);
}

return 0;
}```

Followed by: