#include <iostream> #include <vector> #include <algorithm> using namespace std; struct wa { int num; int il; }; bool operator<(wa a,wa b) { return a.il < b.il; } int main() { cin.tie(0)->sync_with_stdio(false); int n; cin>>n; //vector <int> tab(n); vector <wa> a(n); //-1!!!!! for(int i=0;i<n;i++) { wa nna; nna.num=i+1; nna.il=0; a[i]=nna; } for(int i=0;i<n;i++) { int aj; cin>>aj; a[aj-1].il++; } sort(a.begin(),a.end()); int bulka=0,p=0,q=n-1; while(p<q) { bulka++; a[q].il--; while(a[q].il>0) { if(a[q].il>=a[p].il) { a[q].il-=a[p].il; a[p].il=0; p++; } else { a[p].il-=a[q].il; a[q].il=0; } } q--; } if(p==q&&a[p].il!=0) bulka++; cout<<bulka<<"\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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #include <iostream> #include <vector> #include <algorithm> using namespace std; struct wa { int num; int il; }; bool operator<(wa a,wa b) { return a.il < b.il; } int main() { cin.tie(0)->sync_with_stdio(false); int n; cin>>n; //vector <int> tab(n); vector <wa> a(n); //-1!!!!! for(int i=0;i<n;i++) { wa nna; nna.num=i+1; nna.il=0; a[i]=nna; } for(int i=0;i<n;i++) { int aj; cin>>aj; a[aj-1].il++; } sort(a.begin(),a.end()); int bulka=0,p=0,q=n-1; while(p<q) { bulka++; a[q].il--; while(a[q].il>0) { if(a[q].il>=a[p].il) { a[q].il-=a[p].il; a[p].il=0; p++; } else { a[p].il-=a[q].il; a[q].il=0; } } q--; } if(p==q&&a[p].il!=0) bulka++; cout<<bulka<<"\n"; } |