#include <cstdio>
#include <map>
#include <cstdlib>
int main(){
int n;
std::map<long long,int> powers;
int dummy;
scanf ("%d", &n);
for (int i = 0; i < n; i++) {
scanf ("%d", &dummy);
auto emplace_pair = powers.emplace(dummy, 0);
emplace_pair.first->second += 1;
}
for (auto it = powers.begin(); it != powers.end(); ++it){
int result = it->second / 2;
if (result > 0) {
auto emplace_pair = powers.emplace(it->first + 1, 0);
emplace_pair.first->second += result;
it->second = 0;
}
}
printf("%lld\n", powers.rbegin()->first);
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 | #include <cstdio> #include <map> #include <cstdlib> int main(){ int n; std::map<long long,int> powers; int dummy; scanf ("%d", &n); for (int i = 0; i < n; i++) { scanf ("%d", &dummy); auto emplace_pair = powers.emplace(dummy, 0); emplace_pair.first->second += 1; } for (auto it = powers.begin(); it != powers.end(); ++it){ int result = it->second / 2; if (result > 0) { auto emplace_pair = powers.emplace(it->first + 1, 0); emplace_pair.first->second += result; it->second = 0; } } printf("%lld\n", powers.rbegin()->first); return 0; } |
English