#include <cstdio> #include <map> #define DEBUG false using namespace std; map<int, int> zn; map<int, int>::iterator it; int chciwych[300005]={0}; int n,x,ich=0; int main(){ scanf(" %d",&n); for(int i=0; i<n; i++){ scanf(" %d",&x); zn[x]++; } for(it=zn.begin(); it!=zn.end(); it++){ if(DEBUG)printf("%d %d\n",it->first,it->second); for(int i=1;i<= it->second ;i++){ chciwych[i] += it->second - (it->second % i ); if(DEBUG)printf("* %d *",it->second - (it->second % i)); } //printf("*"); } for(int i=1; i<=n; i++){ printf("%d ",chciwych[i]); } printf("\n"); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <cstdio> #include <map> #define DEBUG false using namespace std; map<int, int> zn; map<int, int>::iterator it; int chciwych[300005]={0}; int n,x,ich=0; int main(){ scanf(" %d",&n); for(int i=0; i<n; i++){ scanf(" %d",&x); zn[x]++; } for(it=zn.begin(); it!=zn.end(); it++){ if(DEBUG)printf("%d %d\n",it->first,it->second); for(int i=1;i<= it->second ;i++){ chciwych[i] += it->second - (it->second % i ); if(DEBUG)printf("* %d *",it->second - (it->second % i)); } //printf("*"); } for(int i=1; i<=n; i++){ printf("%d ",chciwych[i]); } printf("\n"); return 0; } |