Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- struct section {
- int start;
- int end;
- };
- bool cmp(const section& s1, const section& s2) {
- return s1.start > s2.start;
- }
- int main() {
- std::vector<section> sects;
- int n;
- std::cin >> n;
- for (int i = 0; i < n; ++i) {
- section sect;
- std::cin >> sect.start >> sect.end;
- sects.push_back(sect);
- }
- std::sort(sects.begin(), sects.end(), cmp);
- std::vector<section> res;
- section s = sects.back();
- sects.pop_back();
- while (!sects.empty()) {
- section tmp = sects.back();
- sects.pop_back();
- if (tmp.start <= s.end) {
- s.start = tmp.start;
- s.end = std::min(s.end, tmp.end);
- }
- else {
- res.push_back(s);
- s = tmp;
- }
- }
- res.push_back(s);
- std::cout << res.size() << std::endl;
- for (std::vector<section>::iterator it = res.begin(), end = res.end(); it != end; ++it) {
- std::cout << it->start << std::endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement