p2212.pas
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 85 行
PAS
85 行
PROGRAM p2212;
TYPE
node=record
year,per :Integer;
now :Longint;
end;
VAR
total,code,n :Integer;
s :String;
data :array[1..3000]of Node;
PROCEDURE Main;
var
i,j,long :Integer;
Procedure Change(a,b:Integer);
var
temp :Node;
begin
temp:=data[a];
data[a]:=data[b];
data[b]:=temp;
end;
Function Check(a,b:Integer):Boolean;
begin
if (data[a].now>data[b].now) then check:=true else
if (data[a].now=data[b].now)and(data[a].year>data[b].year) then check:=true else
check:=false;
end;
PROCEDURE Make(p:Integer);
var
j,min :Integer;
begin
if 2*p>long then exit;
if 2*p+1>long then j:=2*p else
begin
if check(2*p,2*p+1) then j:=2*p+1 else j:=2*p;
end;
if check(p,j) then
begin
change(p,j);
Make(j);
end;
end;
begin
long:=total;
for i:=total div 2 downto 2 do make(i);
for i:=1 to n do
begin
make(1);
writeln(data[1].year);
data[1].now:=data[1].now+data[1].per;
end;
end;
BEGIN
//assign(input,'p.in');
//reset(input);
while not eof do
begin
total:=0;
readln(s);
while (s<>'#') do
begin
inc(total);
with data[total] do
begin
delete(s,1,pos(' ',s));
val(copy(s,1,pos(' ',s)-1),year,code);
delete(s,1,pos(' ',s));
val(s,per,code);
now:=per;
end;
readln(s);
end;
readln(n);
Main;
end;
END.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?