灵异情况,下样例过了,但是显示WA
查看原帖
灵异情况,下样例过了,但是显示WA
537458
struct_cym楼主2023/11/1 11:43

知道不能全过,但是碰到了灵异情况 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;
}

2023/11/1 11:43
加载中...