#include<bits/stdc++.h> using namespace std; vector<int>V; int maks=0, ch=0, a, n, i=0; int main(){ scanf("%d", &n); for(int c=0;c<n;c++){ scanf("%d", &a); V.push_back(a); } sort(V.begin(), V.end()); a=0; ch=V[0]; while(i<n){ if(ch==V[i]){a++; i++;} else{ if(a==0){ch=V[i];a=1;i++;} else{ if(a%2==1){ maks=max(ch, maks); } a/=2; if(a>0)ch++; } } //printf("%d %d\n", ch, a); } //printf("%d %d\n", ch, a); while(a>0){a/=2; if(a>0)ch++; /*printf("%d ", ch);*/} maks=max(ch, maks); printf("%d\n",maks); }
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 | #include<bits/stdc++.h> using namespace std; vector<int>V; int maks=0, ch=0, a, n, i=0; int main(){ scanf("%d", &n); for(int c=0;c<n;c++){ scanf("%d", &a); V.push_back(a); } sort(V.begin(), V.end()); a=0; ch=V[0]; while(i<n){ if(ch==V[i]){a++; i++;} else{ if(a==0){ch=V[i];a=1;i++;} else{ if(a%2==1){ maks=max(ch, maks); } a/=2; if(a>0)ch++; } } //printf("%d %d\n", ch, a); } //printf("%d %d\n", ch, a); while(a>0){a/=2; if(a>0)ch++; /*printf("%d ", ch);*/} maks=max(ch, maks); printf("%d\n",maks); } |