#include <iostream>
using namespace std;
const int SIZE = 201719;
int main(){
int n;
int tab[SIZE+1];
cin >> n;
int ind;
int max=0;
for(int i = 0; i <= SIZE; i++)
tab[i] = 0;
for(int i = 0; i < n; i++){
cin >> ind;
tab[ind]++;
}
for(int i = 0; i < SIZE; i++){
if(tab[i] >= 1){
max = i;
if(tab[i] > 1)
tab[i+1]+=tab[i]/2;
}
}
while(tab[SIZE] > 0){
max ++;
tab[SIZE]/=2;
}
cout << max;
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 | #include <iostream> using namespace std; const int SIZE = 201719; int main(){ int n; int tab[SIZE+1]; cin >> n; int ind; int max=0; for(int i = 0; i <= SIZE; i++) tab[i] = 0; for(int i = 0; i < n; i++){ cin >> ind; tab[ind]++; } for(int i = 0; i < SIZE; i++){ if(tab[i] >= 1){ max = i; if(tab[i] > 1) tab[i+1]+=tab[i]/2; } } while(tab[SIZE] > 0){ max ++; tab[SIZE]/=2; } cout << max; return 0; } |
English