#pragma GCC optimize("O3,unroll-loops") #include<bits/stdc++.h> using namespace std; void solve(){ int n; cin>>n; map<int,int>m; for(int i=1;i<=n;i++){ int x; cin>>x; m[x]++; } vector<int>ans(n+1); vector<int>vec; for(auto&[q,w]:m){ vec.push_back(w); ans[w+1]+=w; } for(int k=1;k<=n;k++){ ans[k]+=ans[k-1]; } for(auto&x:vec){ for(int k=1;k<=x;k++){ ans[k]+=x%k; } } for(int k=1;k<=n;k++){ cout<<n-ans[k]<<' '; } cout<<"\n"; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
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 30 31 32 33 34 35 36 37 | #pragma GCC optimize("O3,unroll-loops") #include<bits/stdc++.h> using namespace std; void solve(){ int n; cin>>n; map<int,int>m; for(int i=1;i<=n;i++){ int x; cin>>x; m[x]++; } vector<int>ans(n+1); vector<int>vec; for(auto&[q,w]:m){ vec.push_back(w); ans[w+1]+=w; } for(int k=1;k<=n;k++){ ans[k]+=ans[k-1]; } for(auto&x:vec){ for(int k=1;k<=x;k++){ ans[k]+=x%k; } } for(int k=1;k<=n;k++){ cout<<n-ans[k]<<' '; } cout<<"\n"; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); } |