题目: | 找朋友 | |
来源: | Tyvj 1082 | |
题目大意: | N个字符串,N个数字,第k个字符串对应第k个数字,依次输出 | |
数据范围: | 1<=n<=10000 | |
样例: | 5 src oldway claire whqsdhr ylq 89757 20091111 130203 8000800 1008611 | claire 89757 oldway 130203 src 1008611 whqsdhr 8000800 ylq 20091111 |
做题思路: | 两个快排,一个排字符串,一个排数字,然后对应输出就好 | |
知识点: | 模拟、排序 |
var
a:array[0..10000]of string;
b:array[0..10000]of int64;
n,i,j:longint;
procedure qsorta(l,r:longint);{<pas的字符串自行按照字典序比大小不必可以去写>}
var
i,j:longint;
k,t:string;
begin
i:=l;j:=r;
k:=a[(l+r)shr 1];
repeat
while a[i]<k do inc(i);
while a[j]>k do dec(j);
ifi<=j then
begin
t:=a[i];a[i]:=a[j];a[j]:=t;
inc(i);dec(j);
end;
until i>j;
ifi<r then qsorta(i,r);
ifj>l then qsorta(l,j);
end;
procedure qsortb(l,r:longint); {<排数字>}
var
i,j:longint;
k,t:int64;
begin
i:=l;j:=r;
k:=b[(l+r)shr 1];
repeat
while b[i]<k do inc(i);
while b[j]>k do dec(j);
ifi<=j then
begin
t:=b[i];b[i]:=b[j];b[j]:=t;
inc(i);dec(j);
end;
until i>j;
ifi<r then qsortb(i,r);
ifj>l then qsortb(l,j);
end;
begin
readln(n);
fori:=1 to n do readln(a[i]);
fori:=1 to n do readln(b[i]);
qsorta(1,n);
qsortb(1,n);
fori:=1 to n do
writeln(a[i],' ',b[i]);
end.
题目来源:
http://www.tyvj.cn:8080/Problem_Show.asp?id=1082