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