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