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