知道不能全过,但是碰到了灵异情况 WA记录 测试样例 下的样例答案
#include <iostream>
using namespace std;
const int N=2e5+1;
int n,m,s;
struct wp{
long long w;
long long v;
}a[N];
long long maxx;
long long l,r;
long long mid;
long long minn=0x3f3f3f3f;
long long ls[N],rs[N];
long long abss(long long x){
if(x<0){
return -1*x;
}else{
return x;
}
}
long long check(long long W){
long long zans=0;
long long ans=0;
long long k=0;
for(int i=1;i<=m;i++){
for(int j=ls[i];j<=rs[i];j++){
if(a[j].w>=W){
ans+=a[j].v;
k++;
}
}
ans*=k;
zans+=ans;
ans=0;
k=0;
}
return zans;
}
int main(){
scanf("%lld%lld%lld",&n,&m,&s);
for(int i=1;i<=n;i++){
scanf("%lld%lld",&a[i].w,&a[i].v);
maxx=max(maxx,a[i].w);
}
for(int i=1;i<=m;i++){
scanf("%lld%lld",&ls[i],&rs[i]);
}
l=1,r=maxx;
while(l<r-1){
mid=(l+r)/2;
long long m=check(mid);
if(m>s){
l=mid;
minn=min(abss(s-m),minn);
}else if(m==s){
cout<<0<<endl;
return 0;
}else{
minn=min(abss(s-m),minn);
r=mid;
}
}
printf("%lld",minn);
return 0;
}