#include<bits/stdc++.h>
#define ll long long
#define N 200010
using namespace std;
int l[N],r[N],n,m,w[N],v[N],x=1,y;
ll mid,num,sv[N],sw[N],ans,s;
int main(){
scanf("%d%d%lld",&n,&m,&s);
for(int i=1;i<=n;i++){
scanf("%d%d",&w[i],&v[i]);
y=max(y,w[i]);
}
for(int i=1;i<=m;i++)
scanf("%d%d",&l[i],&r[i]);
ans=s,y++;
while(x<y){
memset(sv,0,sizeof(sv));
memset(sw,0,sizeof(sw));
mid=(x+y)/2;
num=0;
for(int i=1;i<=n;i++){
if(w[i]>=mid){
sw[i]=sw[i-1]+1;
sv[i]=sv[i-1]+v[i];
}
else{
sw[i]=sw[i-1];
sv[i]=sv[i-1];
}
}
for(int i=1;i<=m;i++)
num+=(sw[r[i]]-sw[l[i]-1])*(sv[r[i]]-sv[l[i]-1]);
if(num==s){
num=0;
break;
}
ans=min(ans,abs(num-s));
if(num<=s)y=mid;
else x=mid+1;
}
printf("%lld",ans);
return 0;
}
#include<bits/stdc++.h>
#define ll long long
#define N 200010
using namespace std;
ll n,m,mid,num,x=1,y,l[N],r[N],w[N],v[N],sv[N],sw[N],ans,s;
int main(){
scanf("%lld%lld%lld",&n,&m,&s);
for(int i=1;i<=n;i++){
scanf("%lldlld",&w[i],&v[i]);
y=max(y,w[i]);
}
for(int i=1;i<=m;i++)
scanf("%lld%lld",&l[i],&r[i]);
ans=s,y++;
while(x<y){
memset(sv,0,sizeof(sv));
memset(sw,0,sizeof(sw));
mid=(x+y)/2;
num=0;
for(int i=1;i<=n;i++){
if(w[i]>=mid){
sw[i]=sw[i-1]+1;
sv[i]=sv[i-1]+v[i];
}
else{
sw[i]=sw[i-1];
sv[i]=sv[i-1];
}
}
for(int i=1;i<=m;i++)
num+=(ll)(sw[r[i]]-sw[l[i]-1])*(sv[r[i]]-sv[l[i]-1]);
if(num==s){
num=0;
break;
}
ans=min(ans,abs(num-s));
if(num<=s)y=mid;
else x=mid+1;
}
printf("%lld",ans);
return 0;
}
求dalao解答