#include<iostream> #include<cmath> #include<vector> using namespace std; int podzial(vector<int>&T,int l, int p) { int x=T[l]; while(true) { while(T[l]<x) l++; while(T[p]>x) p--; if(l<p) swap(T[l++],T[p--]); else return p; } } void quickSort(vector<int>&T,int l, int p) { if(l<p) { int q=podzial(T,l,p); quickSort(T,l,q); quickSort(T,q+1,p); } } int main () { ios_base::sync_with_stdio(0); cin.tie(0); int n,i,x,y; cin>>n; vector<int>T(n); for(i=0;i<n;i++) cin>>T[i]; quickSort(T,0,n-1); for(i=1;i<n;i++) { x=0; y=T[i]; while(i<n && y==T[i-1] && y==T[i]) { x++; T.erase(T.begin()+i-1,T.begin()+i+1); n-=2; } if(x>0) { if(T[i-1]>y) i--; else if(i>n) i=n; T.insert(T.begin()+i,x,++y); n+=x; } } cout<<T[i-1]; 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 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 59 60 61 62 63 64 | #include<iostream> #include<cmath> #include<vector> using namespace std; int podzial(vector<int>&T,int l, int p) { int x=T[l]; while(true) { while(T[l]<x) l++; while(T[p]>x) p--; if(l<p) swap(T[l++],T[p--]); else return p; } } void quickSort(vector<int>&T,int l, int p) { if(l<p) { int q=podzial(T,l,p); quickSort(T,l,q); quickSort(T,q+1,p); } } int main () { ios_base::sync_with_stdio(0); cin.tie(0); int n,i,x,y; cin>>n; vector<int>T(n); for(i=0;i<n;i++) cin>>T[i]; quickSort(T,0,n-1); for(i=1;i<n;i++) { x=0; y=T[i]; while(i<n && y==T[i-1] && y==T[i]) { x++; T.erase(T.begin()+i-1,T.begin()+i+1); n-=2; } if(x>0) { if(T[i-1]>y) i--; else if(i>n) i=n; T.insert(T.begin()+i,x,++y); n+=x; } } cout<<T[i-1]; return 0; } |