讨论 / WA:90 always~
ysymyth 2010-12-04 21:19:00
点我顶贴 收藏 删除
var ab:array[1..1000] of ansistring;

name:array[1..1000] of string;

a,b:array[1..10000] of longint;

n,i,j:longint;

procedure qs(l,r:longint);

var i,j:longint;

mid,t:ansistring;

begin

i:=l;j:=r;mid:=ab[(l+r)div 2];

repeat

while (length(mid)<length(ab[i]))or((length(mid)=length(ab[i]))and(mid<ab[i]))or((length(mid)=length(ab[i]))and(mid=ab[i])and(name[i]<=name[(l+r)div 2])) do inc(i);

while (length(mid)>length(ab[j]))or((length(mid)=length(ab[j]))and(mid>ab[j]))or((length(mid)=length(ab[j]))and(mid=ab[j])and(name[j]>=name[(l+r)div 2])) do dec(j);

if i<=j then begin

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

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

inc(i);dec(j);

end;

until i>j;

if i<r then qs(i,r);

if j>l then qs(l,j);

end;

begin

readln(n);

for i:=1 to n do begin

readln(name[i]);

readln(ab[i]);

end;

qs(1,n);for i:=1 to n do writeln(name[i]);

for j:=1 to length(ab[1]) do a[j]:=ord(ab[1][length(ab[1])-j+1])-48;

for i:=2 to n do begin

fillchar(b,sizeof(b),0);

for j:=1 to length(ab[i]) do b[j]:=ord(ab[i][length(ab[i])-j+1])-48;

for j:=1 to 10000 do begin

inc(a[j],b[j]);

if a[j]>=10 then begin

dec(a[j],10);

inc(a[j+1],1)

end;

end;

end;

for i:=490 downto 1 do write(a[i]);

end.

求大牛帮助!

查看更多回复
提交回复