D. In Love

题解

首先,我们来学会如何判断在一系列线段中是否存在不相交线段。

我们选取所有线段中最大的左边界l_max和最小的右边界r_min,我们可以清楚的知晓当l_max>r_min的时候存在不相交线段(贪心的思想),否则不存在。

code

 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
    int t,ll,rr;
    multiset<int > l,r;
    char c;
    cin>>t;
    while (t--){
        cin>>c>>ll>>rr;
        if (c=='+') {
            l.insert(ll);
            r.insert(rr);
        }
        if (c=='-'){
            l.erase(l.find(ll));
            r.erase(r.find(rr));
        }
        multiset<int >::iterator it1=l.end(),it2=r.begin();
        if (l.size()>1 && *(--it1)>*(it2)) cout<<"YES\n";
        else cout<<"NO\n";
    }
    return 0;
}

 

posted @ 2024-06-11 18:56  黑屿白  阅读(22)  评论(0)    收藏  举报