[COCI2009-2010#3] SORT
[COCI2009-2010#3] SORT
题目传送门
我们考虑记录一个数出现了多少次,但是由于值域太大,于是我们换一个方法,表示下标为
如果一个数出现了多次,我们开一个值域大小的布尔型数组
然后我们用
#include<bits/stdc++.h>
using namespace std;
const int N =1e9+10;
const int INF=1e6+10;
bool vis[N];
int a[INF],s[INF];
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
int maxx=-INT_MAX;
for(int i=1;i<=n;i++)
{
if(vis[a[i]]==true)
continue;
vis[a[i]]=true;
s[i]=1;
for(int j=i+1;j<=n;j++)
if(a[j]==a[i])
s[i]++;
maxx=max(maxx,s[i]);
}
for(int i=maxx;i>=1;i--)
{
for(int j=1;j<=n;j++)
if(s[j]==i)
{
for(int k=1;k<=i;k++)
cout<<a[j]<<" ";
}
}
return 0;
}