离散化 70pts RE 求助plz
查看原帖
离散化 70pts RE 求助plz
603732
Traitorous_X楼主2022/11/10 13:55

RT 求助

#include<bits/stdc++.h>
using namespace std;
#define rep(I,N,M) for(int I=N;I<=M;++I)
#define int long long
inline int read(void){
	int a=0,f=1;char c=getchar();
	while(c<'0'||c>'9') {c=='-'?f=-1:f=f;c=getchar();}
	while(c>='0'&&c<='9'){a=(a<<3)+(a<<1)+(c^48);c=getchar();}
	return f*a;
}
int c[40005],m;
bool f[40005];
inline int ask(int x){
	return lower_bound(c+1,c+m+1,x)-c;
}
signed main(){
	int n=read();
	int a[n+3],b[n+3],len=0,ans=0;
	rep(I,1,n){c[++m]=a[I]=read();c[++m]=b[I]=read();}
	sort(c+1,c+m+1);
	len=unique(c+1,c+m+1)-c-1;
	rep(i,1,len){
		a[i]=ask(a[i]);
		b[i]=ask(b[i])-1;
		rep(j,a[i],b[i])f[j]=1;
	}
	rep(i,1,len-1){
		if(f[i]) ans+=c[i+1]-c[i];
	}
	cout<<ans<<endl;
	return 0;
}

RE现场(

2022/11/10 13:55
加载中...