#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAXN 1000007
int t[MAXN];
int main() {
int n;
scanf("%d" ,&n);
for (int i = 0; i < n; i++) {
scanf("%d", &t[i]);
}
sort(t, t + n);
int potega = 0, ile = 0, max_pot = 0;
for (int i = 0; i < n; i++) {
int nowa_pot = t[i];
while (potega < nowa_pot) {
if (ile > 0) {
max_pot = max(max_pot, potega);
}
ile /= 2;
potega++;
}
ile++;
max_pot = max(max_pot, potega);
}
while (ile > 0) {
max_pot = max(max_pot, potega);
ile /= 2;
potega++;
}
printf("%d\n", max_pot);
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 33 34 35 | #include <iostream> #include <cstdio> #include <algorithm> using namespace std; #define MAXN 1000007 int t[MAXN]; int main() { int n; scanf("%d" ,&n); for (int i = 0; i < n; i++) { scanf("%d", &t[i]); } sort(t, t + n); int potega = 0, ile = 0, max_pot = 0; for (int i = 0; i < n; i++) { int nowa_pot = t[i]; while (potega < nowa_pot) { if (ile > 0) { max_pot = max(max_pot, potega); } ile /= 2; potega++; } ile++; max_pot = max(max_pot, potega); } while (ile > 0) { max_pot = max(max_pot, potega); ile /= 2; potega++; } printf("%d\n", max_pot); return 0; } |
English