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