同一个代码,c环境下45分,c++环境下AC,这是为啥?
查看原帖
同一个代码,c环境下45分,c++环境下AC,这是为啥?
440751
KIKIxiaohua楼主2021/6/19 11:22
#include<stdio.h>
#include<math.h>
typedef long long ll;
ll n,m,s,r=-1,l,minn=1e13+100;;
ll w[200100],v[200100],sw[200100],sv[200100],li[200100],ri[200100];
int main(){
	scanf("%lld%lld%lld",&n,&m,&s);
	for(int i=1;i<=n;i++){
		scanf("%lld%lld",&w[i],&v[i]);
		if(w[i]>r)r=w[i];
	}
	for(int i=1;i<=m;i++)scanf("%lld%lld",&li[i],&ri[i]);
	while(l<=r){
		ll ans=0,mid=(l+r)/2,s1;
		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++){
			ans+=(sw[ri[i]]-sw[li[i]-1])*(sv[ri[i]]-sv[li[i]-1]);
		}
		s1=s-ans;
		if(s1>0)r=mid-1;
		else l=mid+1;
		s1=abs(s1);
		if(minn>s1)minn=s1;
	}
	printf("%lld\n",minn);
	return 0;
} 
2021/6/19 11:22
加载中...