#include <cstdio> const int MAXA = 201718 + 5; int n; int m[MAXA]; int main() { scanf("%d", &n); int a; while(n--) { scanf("%d", &a); m[a]++; } for (size_t i = 1; i < MAXA; ++i) { m[i] += m[i - 1] / 2; m[i - 1] = m[i - 1] % 2; } for (size_t i = MAXA - 1; i >= 0; i--) { if (m[i] > 0) { printf("%d\n", i); 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 | #include <cstdio> const int MAXA = 201718 + 5; int n; int m[MAXA]; int main() { scanf("%d", &n); int a; while(n--) { scanf("%d", &a); m[a]++; } for (size_t i = 1; i < MAXA; ++i) { m[i] += m[i - 1] / 2; m[i - 1] = m[i - 1] % 2; } for (size_t i = MAXA - 1; i >= 0; i--) { if (m[i] > 0) { printf("%d\n", i); return 0; } } } |