题意:略
解法:看代码(这是c++)
#include<stdio.h>
#include<algorithm>
#define L long long
#define N 200010
using namespace std;
int w[N],v[N],l[N],r[N],n,m;
L s1[N],s2[N],ans=1ll<<62,s;
bool ok(int x,L sum=0){
for(int i=1;i<=n;++i)
s1[i]=s1[i-1]+(w[i]>=x),
s2[i]=s2[i-1]+(w[i]>=x)*v[i];
for(int i=1;i<=m;++i)
sum+=(s2[r[i]]-s2[l[i]-1])*(s1[r[i]]-s1[l[i]-1]);
ans=min(ans,abs(sum-s));
if(sum<s) return 1;
else return 0;
}
int main(){
scanf("%d%d%lld",&n,&m,&s);
for(int i=1;i<=n;++i) scanf("%d%d",w+i,v+i);
for(int i=1;i<=m;++i) scanf("%d%d",l+i,r+i);
int _l=0,_r=1<<30,_m;
while(_l<=_r){
_m=(_l+_r)>>1;
if(ok(_m)) _r=_m-1;
else _l=_m+1;
}
printf("%lld
",ans);
}