rt,跟第一篇题解对拍半天了
#include <bits/stdc++.h>
#define int long long
#define M 2000010
using namespace std;
int n,m,s,w[M],v[M],l[M],r[M],ans=1e9,yy,sum1[M],sum2[M];
bool check(int a){
int y=0;
for(int i=1;i<=n;i++){
sum1[i]=sum2[i]=0;
}
for(int i=1;i<=n;i++){
if(w[i]>a){
sum1[i]=sum1[i-1]+1;
sum2[i]=sum2[i-1]+v[i];
}
else{
sum1[i]=sum1[i-1];
sum2[i]=sum2[i-1];
}
}
for(int i=1;i<=m;i++){
y+=(sum1[r[i]]-sum1[l[i]-1])*(sum2[r[i]]-sum2[l[i]-1]);
}
yy=y;
return y>s;
}
signed main(){
cin>>n>>m>>s;
for(int i=1;i<=n;i++){
cin>>w[i]>>v[i];
}
for(int i=1;i<=m;i++){
cin>>l[i]>>r[i];
}
int le=1,r=M;
ans=s;
while(le<=r){
int mid=(le+r)>>1;
if(check(mid)){
le=mid+1;
}
else{
r=mid-1;
ans=min(ans,abs(yy-s));
}
}
cout<<ans;
return 0;
}
/*
W=4 2*10
5 3 15
1 5
2 5
3 5
4 5
5 5
1 5
2 4
3 3
*/