marathon.pas

来自「PASCAL光盘资料PASCAL光盘资料PASCAL光盘资料」· PAS 代码 · 共 59 行

PAS
59
字号
program E3_5; {Marathon}
const
 number=5;
 mileage=25;
var
 a:array[1..number,1..10] of integer;
 b:array[1..number] of byte;
 i,j,k,min,m,t:integer;

procedure init;
begin
 assign(input,'marath.in');
 reset(input);
 for i:=1 to number do
   for j:=1 to 10 do read(a[i,j]);
 close(input);
end;

procedure work;
begin
 for i:=1 to number do
  begin
   b[i]:=1;
   min:=min+a[i,1];
  end;
 k:=mileage-number;
 while k>0 do
   begin
    t:=1;
    while b[t]=10 do inc(t);
    m:=t;
    for j:=t+1 to number do
    	if b[j]<10 then
       	if a[j,b[j]+1]-a[j,b[j]]<a[m,b[m]+1]-a[m,b[m]] then m:=j;
    dec(k);
    min:=min+a[m,b[m]+1]-a[m,b[m]];
    inc(b[m]);
   end;
end;

procedure print;
begin
 assign(output,'marath.out');
 rewrite(output);
 writeln(min);
 for i:=1 to number-1 do write(b[i],' ');
 writeln(b[number]);
 close(output);
end;

begin
 init;
 work;
 print
end.


			mi

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?