wa 了 0分
查看原帖
wa 了 0分
1056023
_czx6666_楼主2024/12/2 20:14
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,s;
int w[200100],v[200100];
int l[200100],r[200100];
int mn,ma;
int sx=0,ans=0x3f3f3f3f;
int qz[200100],qz2[200100];
bool check(int x){
	int sum=0;
	memset(qz,0,sizeof(qz));
	memset(qz2,0,sizeof(qz2));
	for(int i=1;i<=n;i++){
		if(w[i]>=x)qz[i]=qz[i-1]+1,qz2[i]=qz2[i-1]+v[i];
		else qz[i]=qz[i-1],qz2[i]=qz2[i-1];
	}
	for(int i=1;i<=m;i++){
		int ll=l[i];
		int rr=r[i];
		sum+=(qz[rr]-qz[ll-1])*(qz2[rr]-qz2[ll-1]);
	}
	sx=sum;
	if(sum>x)return true;
	else return false;
}
signed main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++){
		cin>>w[i]>>v[i];
		mn=min(w[i],mn);
		ma=max(w[i],ma);
	}
	for(int i=1;i<=m;i++){
		cin>>l[i]>>r[i];
	}
	int lx=0,rx=2001000;
	while(lx<=rx){
		int mid=(lx+rx+1)/2;
		if(check(mid))lx=mid+1;
		else rx=mid-1;
		ans=min(ans,llabs(sx-s));
	}
	cout<<ans<<endl;
    return 0;
}
2024/12/2 20:14
加载中...