2 条题解

  • 0
    @ 2024-1-7 13:27:26

    判断最左边的右端点和最右边的左端点 如果小于,则不相交

    #include <iostream>
    #include <vector>
    #include <set>
    using namespace std;
    #define int long long
    const int mod=1e+7;
    signed main() {
        iostream::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        int n;
        cin >> n;
        multiset<int> l, r;
    
        for (int i = 1; i <= n; i++) {
            char c;
            cin >> c;
            int x, y;
            cin >> x >> y;
            if (c == '+') {
                l.insert(x);
                r.insert(y);
            } else {
                l.erase(l.find(x));
                r.erase(r.find(y));
            }
            if (l.size() > 1 && (*r.begin() < *l.rbegin())) {
                cout << "YES" << endl;
            } else {
                cout << "NO" << endl;
            }
        }
        return 0;
     }
    

    信息

    ID
    593
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    21
    已通过
    7
    上传者