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