set基础题求调qwq
查看原帖
set基础题求调qwq
246331
mystic_qwq楼主2024/8/7 09:35
#include<bits/stdc++.h>
using namespace std;
struct node {
  int l,r;
  node(int l=0,int r=-1):l(l),r(r){}
  bool operator<(const node&a)const{
    return l<a.l;
  }
};
set<node> s;
int n,l,r; char op;
void print(){
  printf("size: %d\n",s.size());
  for(auto[l,r]:s) cout<<l<<' '<<r<<'\n';
}
main(){
  for(cin>>n;n--;){
    print();
    cin>>op;
    if(op=='A'){
      cin>>l>>r;
      int cnt=0;
      auto itl=s.lower_bound(l);
      if(itl==s.end()) {
        cout<<"0\n";
        continue;
      }
      assert(itl!=s.begin());
      auto it=--itl;
      if(it->r>=l) ++cnt;
      set<node>::iterator itr=s.begin();
      for(auto st=itl;st!=s.end();++st){
        if(st->l<=r) ++cnt;
        else {itr=st;break;}
      }
      if(itr==s.begin())itr=s.end();
      cout<<cnt<<'\n';
      if(it->r>=l) s.erase(it,itr);
      else s.erase(itl,itr);
      s.emplace(l,r);cout<<s.size()<<'\n';
    }
    else cout<<s.size()<<'\n';
  }
}
2024/8/7 09:35
加载中...