prod.pas

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

PAS
67
字号
program production;
const MaxNumber=1000;
var
 n,min:longint;
 a,b,m,o,order:array[1..MaxNumber] of integer;
procedure init;
 var
  i:integer;
 begin
  assign(input,'prod.in'); reset(input);
  readln(n);
  for i:=1 to n do read(a[i]);
  for i:=1 to n do read(b[i]);
  close(input);
 end;

procedure main;
var
 i,j,k,s,t,t1,t2:integer;
begin
 fillchar(m,sizeof(m),0);
 for i:=1 to n do
  if a[i]<b[i] then m[i]:=a[i] else m[i]:=b[i];
 for i:=1 to n do o[i]:=i;
 for i:=1 to n-1 do
  for j:=i+1 to n do
   if m[o[i]]>m[o[j]] then
    begin
     k:=o[i]; o[i]:=o[j]; o[j]:=k;
    end;
 fillchar(order,sizeof(order),0);
 s:=1; t:=n;
 for i:=1 to n do
  if m[o[i]]=a[o[i]] then
   begin
    order[s]:=o[i];
    inc(s);
   end
   else
    begin
     order[t]:=o[i];
     dec(t);
    end;
 t1:=0; t2:=0;
 for i:=1 to n do
  begin
   t1:=t1+a[order[i]];
   if t2<t1 then t2:=t1;
   t2:=t2+b[order[i]];
  end;
 min:=t2;
end;

procedure print;
var i:integer;
begin
 assign(output,'prod.out'); rewrite(output);
 writeln(min);
 for i:=1 to n-1 do write(order[i],' ');
 writeln(order[n]);
 close(output);
end;

begin
 init; main; print
end.

⌨️ 快捷键说明

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