某次科研調查時得到了n個自然數,每個數均不超過1500000000(1.5*109)。已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。
輸入包含n+1行;
第一行是整數n,表示自然數的個數;
第2~n+1每行乙個自然數。
輸出包含m行(m為n個自然數中不相同數的個數),按照自然數從小到大的順序輸出。每行輸出兩個整數,分別是自然數和該數出現的次數,其間用乙個空格隔開。
8 2
4 2
4 5
100
2 100
2 3
4 2
5 1
100 2
40%的資料滿足:1<=n<=1000
80%的資料滿足:1<=n<=50000
100%的資料滿足:1<=n<=200000,每個數均不超過1500 000 000(1.5*109)
o(2n)
記錄每個數字出現的次數和是什麼數字,排序。
const
maxn=10000007;
var x,y,a,b:array [1..maxn] of longint;
i,j,n,s:longint;
procedure
init
(t:longint);
begin
j:=t mod maxn;
while (x[j]<>0) and (x[j]<>t) do
j:=(j+1) mod maxn;
x[j]:=t;
inc(y[j]);
end;
procedure
qsort
(l,r:longint);
var i,j,t,mid:longint;
begin
i:=l; j:=r;
mid:=a[(l+r) div
2]; while ido
begin
while a[i]do inc(i);
while a[j]>mid do dec(j);
if i<=j then
begin
t:=a[i];a[i]:=a[j];a[j]:=t;
t:=b[i];b[i]:=b[j];b[j]:=t;
inc(i);dec(j);
end;
end;
if ithen qsort(i,r);
if lthen qsort(l,j);
end;
begin
readln(n);
for i:=1
to n do
begin
readln(a[i]);
init(a[i]);
end;
for i:=1
to maxn do
if y[i]<>0
then
begin
inc(s);
b[s]:=y[i];
a[s]:=x[i];
end;
qsort(1,s);
for i:=1
to s do
writeln(a[i],' ',b[i]);
end.
2023年分割槽聯賽提高組之一 統計數字
某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 109 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。輸入包含n 1行 第一行是整數n,表示自然數的個數 第2 n 1每行乙個自然數。輸出包含m行 m為n個自...
2023年分割槽聯賽提高組之一 統計數字
description 某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 109 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。input 輸入包含n 1行 第一行是整數n,表示自然數的個數 第2 n 1每行...
2023年分割槽聯賽普級組之一 不
description 津津上初中了。媽媽認為津津應該更加用功學習,所以津津除了上學之外,還要參加媽媽為她報名的各科複習班。另外每週媽媽還會送她去學習朗誦 舞蹈和鋼琴。但是津津如果一天上課超過八個小時就會不高興,而且上得越久就會越不高興。假設津津不會因為其它事不高興,並且她的不高興不會持續到第二天。...