站外题,捞,玄关
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复11
  • 已保存回复11
  • 发布时间2023/8/22 17:05
  • 上次更新2023/11/3 01:57:04
查看原帖
站外题,捞,玄关
1048440
封禁用户楼主2023/8/22 17:05

题目戳这里

蒟蒻太蒻了,所以想找道题练练set,但是打挂了,有没有大佬知道错哪里了,全部RE

#include<bits/stdc++.h>
using namespace std;
inline void read(int &x){
	x=0;int f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-') f=-f;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
	x*=f;return;
} 
inline void put(int x){
	if(x<0) putchar('-'),x=-x;
	if(x>9) put(x/10);
	putchar(x%10+'0');return;
}inline void write(int x){put(x);putchar('\n');}
struct Range{int l,r;};
struct cmp1{
	inline bool operator () (const Range a,const Range b) const{
		if(a.l==b.l)return a.r<b.r;
		return a.l<b.l;
	}
};
struct cmp2{
	inline bool operator () (const Range a,const Range b) const{
		if(a.r==b.r)return a.l<b.l;
		return a.r<b.r;
	}
};
set<Range,cmp2> a;
set<Range,cmp1> b;
int n;char opt;Range ran;
set<Range>::iterator pos,beg;
Range now;
signed main(){
	read(n);
	while(n--){
		scanf("%c",&opt);
		if(opt=='B'){write(a.size());continue;}
		read(ran.l),read(ran.r);
		if(a.empty()){
			a.insert(ran);
			b.insert(ran);
			write(0);continue;
		}
		int lstSiz=a.size();
		pos=a.lower_bound(ran);
		pos--;beg=--a.begin();
		for(auto i=pos;i!=beg;i--){
			now=*i;
			if(now.r<ran.l) break;
			if(a.count(now)&&!a.empty()) a.erase(now);
			if(b.count(now)&&!b.empty()) b.erase(now);
		}
		pos=b.lower_bound(ran);
		beg=b.end();
		for(auto i=pos;i!=beg;i++){
			now=*i;
			if(now.l>ran.r) break;
			if(a.count(now)&&!a.empty()) a.erase(now);
			if(b.count(now)&&!b.empty()) b.erase(now);
		}
		int nowSiz=a.size();
		write(lstSiz-nowSiz);
		a.insert(ran);b.insert(ran);
	}
	return 0;
}

2023/8/22 17:05
加载中...