#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N =200010;
ll n,m,s;
ll st[N],en[N],tw[N],tv[N],maxnum=0,w[N],v[N];
ll caculate(ll mid){
for(int i=1;i<=n;i++){
if(w[i]>=mid) tw[i]=tw[i-1]+1,tv[i]=tv[i-1]+v[i];
else tw[i]=tw[i-1],tv[i]=tv[i-1];
}
ll res=0;
for(int i=1;i<=m;i++){
res+=(tw[en[i]]-tw[st[i]-1])*(tv[en[i]]-tv[st[i]-1]);
}
return res;
}
int main(){
scanf("%lld%lld%lld",&n,&m,&s);
for (int i = 1; i <=n; i++)
{
scanf("%lld%lld",&w[i],&v[i]);
maxnum=max(maxnum,w[i]);
}
for (int i = 1; i <=m; i++)
{
scanf("%lld%lld",&st[i],&en[i]);
}
ll l=0,r=maxnum,mid,res,minnum=1e15;
while(l<r){
mid=(l+r)>>1;
res=caculate(mid);
ll tt=s-res;
if(0>=tt) l=mid+1;
else r=mid;
minnum=min(minnum,abs(tt));
}
printf("%lld",minnum);
return 0;
}
为什么上面判断条件的时候我写>=第13个点过不了写>就可以过了?题意不是>吗?