比赛 |
20121106 |
评测结果 |
AAAAWAWW |
题目名称 |
过河 |
最终得分 |
62 |
用户昵称 |
乔治文 |
运行时间 |
0.008 s |
代码语言 |
Pascal |
内存使用 |
77.42 MiB |
提交时间 |
2012-11-06 11:59:54 |
显示代码纯文本
var i,j,pp,n,l,r,flag,max,ans,temp,k:longint;
mark:array[0..1000,0..1000] of boolean;
p,t:array[0..10000000] of longint;
a,b,c:array[0..1000] of longint;
begin
assign(input,'rivera.in');
reset(input);
assign(output,'rivera.out');
rewrite(output);
read(n);
for i:=1 to n do
begin
read(a[i],b[i]);
c[i]:=a[i]+b[i];
if c[i]>max
then max:=c[i];
end;
p[1]:=0;
t[1]:=0;
l:=0;
r:=0;
flag:=0;
mark[0,0]:=true;
fillchar(mark,sizeof(mark),false);
repeat
for i:=0 to 5 do
begin
if p[l]+i>n
then begin
ans:=t[l]+1;
flag:=1;
break;
end
else begin
temp:=t[l]+1;
if c[p[l]+i]<>0
then begin
if temp mod c[p[l]+i]=0
then k:=c[p[l]+i]
else k:=temp mod c[p[l]+i];
end
else k:=0;
if (k<=a[p[l]+i])
then begin
inc(r);
p[r]:=p[l]+i;
t[r]:=t[l]+1;
if mark[p[r],k]
then dec(r)
else mark[p[r],k]:=true;
end;
if l-i>0
then begin
if c[p[l]-i]<>0
then begin
if temp mod c[p[l]-i]=0
then k:=c[p[l]-i]
else k:=temp mod c[p[l]-i];
end
else k:=0;
if k<=a[p[l]-i]
then begin
inc(r);
p[r]:=p[l]-i;
t[r]:=t[l]+1;
if mark[p[r],k]
then dec(r)
else mark[p[r],k]:=true;
end;
end;
end;
end;
if flag=1
then break;
inc(l);
until l>r;
if flag=1
then writeln(ans)
else writeln('NO');
close(input);
close(output);
end.