比赛 NOIP2008集训模拟2 评测结果 AAAAAATTTT
题目名称 美酒节赛羊 最终得分 60
用户昵称 elysian 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-11-11 10:40:31
显示代码纯文本
program elysian;
const
fin='goat.in';fout='goat.out';
var
f:array[0..12,0..110] of longint;
sn,pn,ans:longint;
f1,f2:text;

{function max(a,b:longint):longint;
begin
if a>=b then max:=a
else max:=b;
end; }

procedure print;
begin
assign(f2,fout);rewrite(f2);
writeln(f2,ans);
close(f2);
halt;
end;

procedure main;
var
p,i,t,count:longint;
begin
t:=0;count:=11;
repeat
inc(t);
for p:=0 to pn do
 begin
   if (p-2>=0)and(f[t-1,p-2]+5>=f[t,p]) then f[t,p]:=f[t-1,p-2]+5;
   if (p-5>=0)and(f[t-1,p-5]+10>=f[t,p]) then f[t,p]:=f[t-1,p-5]+10;

   if p+1<=pn then
    if f[t-1,p+1]+1>f[t,p] then f[t,p]:=f[t-1,p+1]+1;

   if (p+10=pn)and(t-10>=0) then
    if f[t-10,p+10]>f[t,p] then f[t,p]:=f[t-10,p+10];

   if f[t,p]>=sn then
    begin
    if t<11 then ans:=t
     else ans:=count;
     print;
    end;

end;

if t>10 then
 begin
  for i:=1 to 11 do
   for p:=0 to pn do
    f[i,p]:=f[i+1,p];

    count:=count+1;
 t:=10;
 end;


until 1<>1;

end;

procedure init;
begin
assign(f1,fin);reset(f1);
readln(f1,sn,pn);
if pn=1 then begin ans:=sn;print;end;
close(f1);
fillchar(f,sizeof(f),0);
end;

begin
init;
main;
end.