#include<cstdio> #include<algorithm> #include<memory> int main() { unsigned n; std::scanf("%u", &n); std::unique_ptr<unsigned[]>A{ new unsigned[n] }; for (unsigned i = 0; i != n; ++i) std::scanf("%u", &A[i]); std::sort(&A[0], &A[n]); unsigned last = 0; unsigned count = 0; for (unsigned i = 0; i != n; ++i) { if (last != A[i]) { if (A[i] - last >= 32) count = 0; else count >>= A[i] - last; last = A[i]; } ++count; } std::printf("%u\n", last + (31U -__builtin_clz(count))); }
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 | #include<cstdio> #include<algorithm> #include<memory> int main() { unsigned n; std::scanf("%u", &n); std::unique_ptr<unsigned[]>A{ new unsigned[n] }; for (unsigned i = 0; i != n; ++i) std::scanf("%u", &A[i]); std::sort(&A[0], &A[n]); unsigned last = 0; unsigned count = 0; for (unsigned i = 0; i != n; ++i) { if (last != A[i]) { if (A[i] - last >= 32) count = 0; else count >>= A[i] - last; last = A[i]; } ++count; } std::printf("%u\n", last + (31U -__builtin_clz(count))); } |