統計數字(快速排序,emmm,更更快)

2021-08-22 19:41:28 字數 1209 閱讀 1786

時間限制: 1 sec  記憶體限制: 128 mb

提交: 153  解決: 83

[提交][狀態][討論版][命題人: 外部匯入]

某次科研調查時得到了n個自然數,每個數均不超過1500000000(1.5*109)。已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。

輸入包含n+1行:

第1行是整數n,表示自然數的個數。 

第2~n+1行每行乙個自然數。

輸出包含m行(m為n個自然數中不相同數的個數),按照自然數從小到大的順序輸出。每行輸出兩個整數,分別是自然數和該數出現的次數,其間用乙個空格隔開。

824

245100

2100

2 3

4 25 1

100 2

40%的資料滿足:1<=n<=1000

80%的資料滿足:1<=n<=50000

100%的資料滿足:1<=n<=200000,每個數均不超過1 500 000 000(1.5*109)

#include#include#includeusing namespace std;

const int maxn =200000 +5;

typedef long long ll;

ll a[maxn],n;

void sort(int left,int right)//閉區間

}while(i<=j);

if(lefti) sort(i,right);

}void print(int n)

{ int b=a[0],c=0;

for(int i=0;i>n;

for(int i=0;i//快速排序2:以中間元素來分區間

//對陣列a中的元素a[left]、a[left+1]……a[right] 排序

void sort(int a[ ],int left, int right)

{ int i,j,x,y;i=left ; j=right;

x=a[(left+right)/2]; //用中間元素

do { while ( a[i]x && j>left ) j--;

//找乙個比x小的元素a[j] if ( ii ) sort(a,i+1,right); //排序後半部分

複製可能遺漏,看上面**

統計數字 快速排序

題目描述 某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 109 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。輸入描述 第1行是整數n,表示自然數的個數 第2 n l每行乙個自然數。輸出描述 共m行 m為...

統計數字 快速排序題解

某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 109 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。輸入第1行是整數n,表示自然數的個數 第2 n l每行乙個自然數。輸出共m行 m為n個自然數中不相同數的...

A 統計數字

time limit 1 sec memory limit 128 mb submit 51 solved 28 submit status web board 某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 109 已知不相同的數不超過10000個,現在需要統計這些自然...