#include <iostream>
#include <cstring>
#include <cmath>
#define A_RANGE 201719
int main() {
int n, maxA = 0;
int a[A_RANGE];
memset(a, 0, A_RANGE * sizeof(int));
std::cin >> n;
for (int i=0; i<n; ++i) {
int val;
std::cin >> val;
if (val > maxA) {
maxA = val;
}
++a[val];
}
for (int i=0; i<=maxA; ++i) {
int next = a[i] / 2;
if (next > 0) {
a[i + 1] += next;
}
}
float res = std::log2((float)a[maxA]);
std::cout << maxA + (int)res;
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 30 31 32 | #include <iostream> #include <cstring> #include <cmath> #define A_RANGE 201719 int main() { int n, maxA = 0; int a[A_RANGE]; memset(a, 0, A_RANGE * sizeof(int)); std::cin >> n; for (int i=0; i<n; ++i) { int val; std::cin >> val; if (val > maxA) { maxA = val; } ++a[val]; } for (int i=0; i<=maxA; ++i) { int next = a[i] / 2; if (next > 0) { a[i + 1] += next; } } float res = std::log2((float)a[maxA]); std::cout << maxA + (int)res; return 0; } |
English