记录编号 |
48987 |
评测结果 |
AAAAAAAA |
题目名称 |
过河 |
最终得分 |
100 |
用户昵称 |
ACdog |
是否通过 |
通过 |
代码语言 |
C |
运行时间 |
0.032 s |
提交时间 |
2012-11-07 07:26:09 |
内存使用 |
82.08 MiB |
显示代码纯文本
#include<stdio.h>
int n,a[1001],b[1001],c[11],T,hs[1001][1001],h,t,ans=0;
struct abc
{
int p,t;
}f[10000000];
int main()
{
FILE *in=fopen("rivera.in","r");
FILE *out=fopen("rivera.out","w");
int i;
fscanf(in,"%d",&n);
for(i=1;i<=10;i++)
c[i]=1;
for(i=1;i<=n;i++)
{
fscanf(in,"%d %d",&a[i],&b[i]);
c[a[i]+b[i]]=a[i]+b[i];
}
for(T=1;;T++)
{
for(i=1;i<=10;i++)
if(T%c[i]!=0) break;
if(i==11) break;
}
t=2;
h=1;
hs[0][0]=1;
a[0]=0x7fffffff;
while(h!=t)
{
for(i=-5;i<=5;i++)
if(i+f[h].p>=0&&i+f[h].p<=n+1)
{
if(f[h].p+i==n+1)
{
ans=f[h].t+1;
break;
}
if(f[h].t%(a[f[h].p+i]+b[f[h].p+i])<a[f[h].p+i]&&hs[f[h].t%T+1][i+f[h].p]==0)
{
hs[f[h].t%T+1][i+f[h].p]=1;
f[t].t=f[h].t+1;
f[t].p=i+f[h].p;
t++;
}
}
if(ans!=0) break;
h++;
}
if(ans!=0)
fprintf(out,"%d",ans);
else
fprintf(out,"NO");
return 0;
}