#include <iostream>
using namespace std;
#define fori(i, k, n) for(int i = (int)k; i < n; ++i)
int A[300000];
int main(){
int n, a, maks = 0;
cin>>n;
fori(i, 0, n){
cin>>a;
A[a]++;
maks = max(a, maks);
}
int k = 0;
while(true){
if(k > maks && A[k] == 0){
k--;
break;
}
else{
A[k+1] += A[k]/2;
k++;
}
}
cout<<k<<endl;
}
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 | #include <iostream> using namespace std; #define fori(i, k, n) for(int i = (int)k; i < n; ++i) int A[300000]; int main(){ int n, a, maks = 0; cin>>n; fori(i, 0, n){ cin>>a; A[a]++; maks = max(a, maks); } int k = 0; while(true){ if(k > maks && A[k] == 0){ k--; break; } else{ A[k+1] += A[k]/2; k++; } } cout<<k<<endl; } |
English