#include <bits/stdc++.h> using namespace std; #define MAXN 250000 int tab[MAXN]; //max wynik: 1e6 * 2**(2e5) < 2**20 * 2**(2e5) = 2**(2e5 + 20) int main() { int n, a, res = 0; scanf("%d", &n); while(n--){ scanf("%d", &a); tab[a]++; } for(int i = 0; i < MAXN; i++) { if(tab[i] > 0) res = i; tab[i+1] += tab[i]/2; } printf("%d\n", res); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <bits/stdc++.h> using namespace std; #define MAXN 250000 int tab[MAXN]; //max wynik: 1e6 * 2**(2e5) < 2**20 * 2**(2e5) = 2**(2e5 + 20) int main() { int n, a, res = 0; scanf("%d", &n); while(n--){ scanf("%d", &a); tab[a]++; } for(int i = 0; i < MAXN; i++) { if(tab[i] > 0) res = i; tab[i+1] += tab[i]/2; } printf("%d\n", res); } |