b:array[0..14] of longint;
s:array[1..130000] of string[30];
n,i,x:longint;
procedure pp(l,r:longint);
var i,j:longint;
t,mid:string[30];
begin
i:=l; j:=r; mid:=s[(i+j) div 2];
repeat
while s[i]<mid do inc(i);
while s[j]>mid do dec(j);
if i<=j then
begin
t:=s[i]; s[i]:=s[j]; s[j]:=t;
inc(i); dec(j);
end;
until i>j;
if l<j then pp(l,j);
if i<r then pp(i,r);
end;
procedure px(l,r:longint);
var i,j,k:longint;
t,mid:string[30];
begin
i:=l; j:=r; mid:=s[(i+j) div 2];
repeat
while s[i]<mid do inc(i);
while s[j]>mid do dec(j);
if i<=j then
begin
t:=s[i]; s[i]:=s[j]; s[j]:=t;
k:=a[i]; a[i]:=a[j]; a[j]:=k;
inc(i); dec(j);
end;
until i>j;
if l<j then px(l,j);
if i<r then px(i,r);
end;
begin
readln(n);
for i:=1 to n do
begin
readln(s[i]);
x:=pos(' ',s[i]);
val(copy(s[i],x+1,length(s)-x),a[i]);
if (a[i]>0) and (a[i]<150) then inc(b[a[i] div 10]);
delete(s[i],x,length(s)-x+1);
end;
writeln('1~9 10~19 20~29 30~39 40~49 50~59 60~69 70~79 80~89 90~99 100~109 110~119 120~129 130~139 140~149');
for i:=0 to 13 do
write(b[i],' ');
writeln(b[14]);
px(1,n);
x:=0;
for i:=1 to n do
begin
writeln(s[i],' ',a[i]);
if a[i]=150 then
begin
inc(x);
s[x]:=s[i];
end;
end;
writeln(x);
if x=0 then writeln('NO')
else begin
pp(1,x);
for i:=1 to x do
writeln(s[i]);
end;
end.
大家帮忙看看程序!!!