#include <cstdio>
constexpr int kMaxPower = 201718 + 50; // 10^6 ~= 2^20, 50 to be safe
int n;
int digit[kMaxPower];
int main() {
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
int x;
scanf("%d", &x);
++digit[x];
}
for (int d = 0; d < kMaxPower; ++d) {
digit[d + 1] += digit[d] / 2;
digit[d] %= 2;
}
for (int d = kMaxPower - 1; d >= 0; --d) {
if (digit[d] > 0) {
printf("%d\n", d);
break;
}
}
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 | #include <cstdio> constexpr int kMaxPower = 201718 + 50; // 10^6 ~= 2^20, 50 to be safe int n; int digit[kMaxPower]; int main() { scanf("%d", &n); for (int i = 0; i < n; ++i) { int x; scanf("%d", &x); ++digit[x]; } for (int d = 0; d < kMaxPower; ++d) { digit[d + 1] += digit[d] / 2; digit[d] %= 2; } for (int d = kMaxPower - 1; d >= 0; --d) { if (digit[d] > 0) { printf("%d\n", d); break; } } return 0; } |
English