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