#include <bits/stdc++.h> using namespace std; unordered_map <int, int> mapa; vector <int> v; int ans[300007]; //drzewo przedzialowe pytanie w punkcie suma na przedziale int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; for(int i = 0;i<n;i++){ int a; cin >> a; mapa[a]++; if(mapa[a]==1){ v.push_back(a); } } for(int i = 0;i<v.size();i++){ for(int j = 1;j<=mapa[v[i]];j++){ ans[j]+=(mapa[v[i]]/j)*j; } } for(int i = 1;i<=n;i++){ cout << ans[i] << " "; } }
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 | #include <bits/stdc++.h> using namespace std; unordered_map <int, int> mapa; vector <int> v; int ans[300007]; //drzewo przedzialowe pytanie w punkcie suma na przedziale int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; for(int i = 0;i<n;i++){ int a; cin >> a; mapa[a]++; if(mapa[a]==1){ v.push_back(a); } } for(int i = 0;i<v.size();i++){ for(int j = 1;j<=mapa[v[i]];j++){ ans[j]+=(mapa[v[i]]/j)*j; } } for(int i = 1;i<=n;i++){ cout << ans[i] << " "; } } |