#include<bits/stdc++.h> using namespace std; int ans = 0, N, M, ap[222000]; int main () { scanf ("%d", &N); for (int i=1; i<=N; i++) { int x; scanf ("%d", &x), ap[x] ++; if (x > M) M = x; } for (int i=0; i<=M || ap[i]; i++) { ap[i + 1] += (ap[i] >> 1), ap[i] &= 1; if (ap[i]) ans = i; } printf ("%d\n", ans); 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 | #include<bits/stdc++.h> using namespace std; int ans = 0, N, M, ap[222000]; int main () { scanf ("%d", &N); for (int i=1; i<=N; i++) { int x; scanf ("%d", &x), ap[x] ++; if (x > M) M = x; } for (int i=0; i<=M || ap[i]; i++) { ap[i + 1] += (ap[i] >> 1), ap[i] &= 1; if (ap[i]) ans = i; } printf ("%d\n", ans); return 0; } |