比赛 noip-081029 评测结果 AAAAAAA
题目名称 最小乘车费用 最终得分 100
用户昵称 zhai 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-10-29 21:26:55
显示代码纯文本
program busses;
  const
    max=500;
  type
    sz=array[1..2,1..10]of integer;
    sx=array[1..10]of real;
  var
    f1,f2:text;
    n:integer;
    a:sz;
    a1,a2,a3:integer;
    procedure ini;
      var
        i,j:integer;
        m:real;
        b:sx;
      begin
        assign(f1,'busses.in');reset(f1);
        assign(f2,'busses.out');rewrite(f2);
        for i:=1 to 10 do read(f1,a[1,i]);
        read(f1,n);
        close(f1);
        for i:=1 to 10 do b[i]:=a[1,i]/i;
        m:=b[1];j:=1;
        for i:=2 to 10 do
          if m>b[i] then begin m:=b[i];j:=i;end;
        a[2,1]:=j;
        a1:=0;
        a2:=0;
        a3:=maxint;
      end;
    procedure chu1;
      var
        i:integer;
      begin
        i:=1;
        while i<=n-10 do begin
          a1:=a1+a[1,a[2,1]];
          i:=i+a[2,1];
        end;
        a1:=a1-a[1,a[2,1]];
        a2:=n-(i-a[2,1])+1;
      end;
    procedure try(x,y:integer);
      var
        i,j:integer;
      begin
        for i:=1 to x do
         if i<=10 then begin
          if i=x then begin
            inc(y,a[1,i]);
            if y<a3 then a3:=y;
            exit;
          end else try(x-i,y+a[1,i]);
         end;
      end;
  begin
    ini;
    chu1;
    try(a2,0);
    a1:=a1+a3;
    write(f2,a1);
    close(f2);
  end.