去年的代码,今天提交被hack了95pts,求查错
查看原帖
去年的代码,今天提交被hack了95pts,求查错
285617
黑影洞人楼主2022/5/3 09:46
#include<cstdio>
#include<algorithm>
#include<set>
#define N 10000005
using namespace std;
struct node{
	int l,r;
	bool operator<(const node &a)const{if(l==a.l)return r<a.r;else return l<a.l;}
}a1[N],a2[N]; 
set<node> st;
int n,m1,m2,f1[N],f2[N],ans;
signed main(){
	scanf("%d%d%d",&n,&m1,&m2);
	for(int i=1;i<=m1;i++)scanf("%d%d",&a1[i].l,&a1[i].r);
	for(int i=1;i<=m2;i++)scanf("%d%d",&a2[i].l,&a2[i].r);
	st.clear();for(int i=1;i<=m1;i++)st.insert(a1[i]);
	for(int i=1;i<=m1;i++){
		int pos=0,c=0;
		while(1){
			set<node>::iterator it;
			it=st.lower_bound((node){pos,pos});
			if(it==st.end())break;
			pos=it->r;
			st.erase(it);
			c++;
		}
		f1[i]=f1[i-1]+c;
	}
	st.clear();for(int i=1;i<=m2;i++)st.insert(a2[i]);
	for(int i=1;i<=m2;i++){
		int pos=0,c=0;
		while(1){
			set<node>::iterator it;
			it=st.lower_bound((node){pos,pos});
			if(it==st.end())break;
			pos=it->r;
			st.erase(it);
			c++;
		}
		f2[i]=f2[i-1]+c;
	}
	for(int i=0;i<=n;i++)ans=max(ans,f1[i]+f2[n-i]);
	printf("%d",ans);
	return 0;
}



2022/5/3 09:46
加载中...