#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); } |
English