#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<string>
using namespace std;
int n;
int a[200005];
int b[200005];
void comb(int l,int mid,int r)
{
int p=l,q=mid+1,k=l;
while(p<=mid&&q<=r)
{
if(a[p]<=a[q])
{
b[k++]=a[p++];
}
else
{
b[k++]=a[q++];
}
}
while(p<=mid) b[k++]=a[p++];
while(q<=r) b[k++]=a[q++];
for(int i=l;i<=r;i++)
{
a[i]=b[i];
}
}
void q_sort(int l,int r)
{
if(l==r) return ;//!!!!!!
int mid=(l+r)/2;
q_sort(l,mid);
q_sort(mid+1,r);
comb(l,mid,r);
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
a[i]=x;
}
q_sort(0,n-1);
int t=a[0];
int cnt=1;
for(int i=1;i<n;i++)
{
if(a[i]==t)
{
cnt++;
}
else
{
printf("%d %d\n",t,cnt);
cnt=1;
t=a[i];
}
}
printf("%d %d\n",t,cnt);
}
递归排序模板
猜你喜欢
转载自blog.csdn.net/qq_43868883/article/details/102365757
今日推荐
周排行