#include<bits/stdc++.h>
#define debu
using namespace std;
const int maxn=1e4+50;
int ans,n;
int a[maxn];
map<int,int> m;
void solve()
{
sort(a,a+n);
printf("%d\n",ans);
for(int i=0; i<ans; i++)
{
printf("%d",a[i]);
for(int j=i+ans; j<n; j+=ans)
printf(" %d",a[j]);
printf("\n");
}
}
int main()
{
#ifdef debug
freopen("in.in","r",stdin);
#endif // debug
while(scanf("%d",&n)==1&&n)
{
ans=0;m.clear();
for(int i=0; i<n; i++)
{
scanf("%d",&a[i]);
if(!m[a[i]]) m[a[i]]=1;
else m[a[i]]++;
ans=max(ans,m[a[i]]);
}
solve();
}
return 0;
}
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2041
题解:ans=max(每个数字出现次数),输出则按照ans等差输出。