p1431.pas

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 81 行

PAS
81
字号
PROGRAM p1431;

TYPE
	node=record
	name			:String;
	weight			:Longint;
	end;

const
	maxn=100;
	t='END';

VAR
	data				:array[1..maxn]of Node;
	n,i				:Integer;
	a,b				:Longint;
	s				:String;
	code				:Integer;

FUNCTION Find(left,right:Integer;key:Longint):Integer;
var
	i,j				:Integer;
	temp				:Node;
begin
i:=left-1;
j:=right+1;
repeat
repeat dec(j) until data[j].weight<=key;
repeat inc(i) until data[i].weight>=key;
if i<j then
begin
temp:=data[i];
data[i]:=data[j];
data[j]:=temp;
end else break;
until false;
find:=j;
end;

PROCEDURE Sort(left,right:Integer);
var
	mid				:Integer;
begin
mid:=find(left,right,data[left].weight);
if mid > left then Sort(left,mid);
if mid + 1<right then Sort(mid + 1,right);
end;

PROCEDURE Print;
var
	i				:Integer;
begin
for i:=n downto 1 do
	writeln(data[i].name);
end;

BEGIN
//assign(input,'p.in');
//reset(input);
while (not eof) do
begin
readln(s);
readln(s);
n:=0;
while s<>t do
begin
inc(n);
data[n].name:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
val(copy(s,1,pos(' ',s)-1),a,code);
delete(s,1,pos(' ',s));
val(s,b,code);
data[n].weight:=b-a;
readln(s);
end;
sort(1,n);
print;
if not eof then writeln;
end;
END.

⌨️ 快捷键说明

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