// zna "Znaczki pocztowe" [C] - Jakub Bareja #include <bits/stdc++.h> #include <map> using namespace std; int n; // liczba znaczków map<int,int> m; // m[i] - ile vector<int> v; bool por(int a, int b) { return a > b; } int main() { scanf("%d",&n); for(int i=0; i<n; i++) { int a; scanf("%d",&a); m[a]++; } for(auto it=m.begin(); it!=m.end(); it++) v.push_back(it->second); sort(v.begin(),v.end(),por); bool flaga = false; for(int i=1; i<=n; i++) { if(flaga) { printf("0 "); continue; } int suma = 0; for(int j: v) suma += (j/i)*i; printf("%d ", suma); flaga = (suma == 0); } printf("\n"); }
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 | // zna "Znaczki pocztowe" [C] - Jakub Bareja #include <bits/stdc++.h> #include <map> using namespace std; int n; // liczba znaczków map<int,int> m; // m[i] - ile vector<int> v; bool por(int a, int b) { return a > b; } int main() { scanf("%d",&n); for(int i=0; i<n; i++) { int a; scanf("%d",&a); m[a]++; } for(auto it=m.begin(); it!=m.end(); it++) v.push_back(it->second); sort(v.begin(),v.end(),por); bool flaga = false; for(int i=1; i<=n; i++) { if(flaga) { printf("0 "); continue; } int suma = 0; for(int j: v) suma += (j/i)*i; printf("%d ", suma); flaga = (suma == 0); } printf("\n"); } |