讨论 / 看看哪儿错了,运行不了
a646570013 2008-09-22 04:15:00
点我顶贴 收藏 删除
program pig;

type

date=record

r,name:string;

rou:array[1..2000]of longint;

end;

var

a:array[1..2000]of date;

s:array[1..2000]of longint;

i,j,n:longint;

function dx(a,b:date):longint;

var

i:longint;

begin

if length(a.r)>length(b.r) then exit(1);

if length(a.r)<length(b.r) then exit(-1);

i:=0;

repeat

inc(i)

until (a.r[i]<>b.r[i])or(i=length(a.r)+1);

if a.r[i]>b.r[i] then exit(1);

if a.r[i]<b.r[i] then exit(-1);

i:=0;

repeat

inc(i);

until (a.name[i]<>b.name[i]);

if ord(a.name[i])>ord(b.name[i]) then exit(-1);

if ord(a.name[i])<ord(b.name[i]) then exit(1);

end;

procedure pai(m,n:longint);

var

i,j:longint; k,t:date;

begin

i:=m; j:=n; k:=a[(m+n)mod 2];

while dx(k,a[i])=1 do inc(i);

while dx(k,a[j])=-1 do dec(j);

if i<=j

then begin

t:=a[i]; a[i]:=a[j]; a[j]:=t;

end;

if i<n then pai(i,n);

if j>m then pai(m,j);

end;

begin

readln(n);

for i:=1 to n do

begin

readln(a[i].name);

readln(a[i].r);

end;

pai(1,n);

for i:=1 to n do

begin

writeln(a[i].name);

end;

for i:=1 to n do

for j:=1 to length(a[i].r) do

a[i].rou[2001-j]:=ord(a[i].r[j])-ord(0);

for i:=1 to n do

for j:=2000 downto 2001-length(a[i].rou) do

s[j]:=s[j]+a[i].rou[j];

i:=0;

repeat

inc(i);

until s[j]<>0;

for j:=1999 downto i do

begin

s[j]:=s[j+1]div 10;

s[j+1]:=s[j+1]mod 10;

end;

repeat

inc(i);

s[i]:=s[i-1]div 10;

s[i-1]:=s[i-1]mod 10;

until s[i]<10;

for i:=1511 to 2000 do

write(s[i]); readln;

readln;

end.

查看更多回复
提交回复