题解 | 校门外的树

校门外的树

https://www.nowcoder.com/practice/0e8cfc82936048769af45967f3c4ef7e

#include <any>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int l, m;
    cin >> l >> m;
    vector<pair<int, int>> v(m);
    for (int i = 0; i < m; ++i) {
        cin >> v[i].first >> v[i].second;
    }
    sort(v.begin(), v.end());
    vector<pair<int, int>> tmp;
    for (const auto& kv : v) {
        if (tmp.empty() || tmp.back().second < kv.first - 1) {
            tmp.push_back(kv);
        } else {
            tmp.back().second = max(tmp.back().second, kv.second);
        }
    }
    int ret = l + 1;
    for (const auto& kv : tmp) {
        ret -= (kv.second - kv.first + 1);
    }
    cout << ret << endl;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务