#include<stdio.h>
#include<vector>
#include<deque>
#include<algorithm>
int main() {
int count;
scanf("%d", &count);
std::vector<int> v;
v.reserve(count);
int a;
while (count--) {
scanf("%d", &a);
v.push_back(a);
}
std::sort(begin(v), end(v));
std::deque<int> d;
for (const auto& e : v) {
while (!d.empty() && d.back() < e) d.pop_back();
d.push_back(e);
while (d.size() > 1 && d.back() == d[d.size() - 2]) {
int last = d.back();
d.pop_back();
d.pop_back();
d.push_back(last + 1);
}
// for (const auto & e : d) {
// printf("%d ", e);
// }
// printf("\n");
}
printf("%d", d.front());
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 36 37 | #include<stdio.h> #include<vector> #include<deque> #include<algorithm> int main() { int count; scanf("%d", &count); std::vector<int> v; v.reserve(count); int a; while (count--) { scanf("%d", &a); v.push_back(a); } std::sort(begin(v), end(v)); std::deque<int> d; for (const auto& e : v) { while (!d.empty() && d.back() < e) d.pop_back(); d.push_back(e); while (d.size() > 1 && d.back() == d[d.size() - 2]) { int last = d.back(); d.pop_back(); d.pop_back(); d.push_back(last + 1); } // for (const auto & e : d) { // printf("%d ", e); // } // printf("\n"); } printf("%d", d.front()); return 0; } |
English