求解!!
查看原帖
求解!!
1389468
ZHAOJJzjj123楼主2024/11/10 18:54

这题咋做呀?我只有29分。求大佬指导。

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,q,ans,a[1000010];
int main(){
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;i++){
		int x;
		scanf("%d",&x);
		a[i]=a[i-1]+x;
	}
	while(q--){
		int l,r,k;
		scanf("%d%d%d",&l,&r,&k);
		ans=0x3fffffff;
		int m=r-l+1;
		if(k==m-1){
			ans=m-(a[r]-a[l-1]);
		}
		if(k-(a[r]-a[l-1])<0&&k-(a[r]-a[l-1])>-m){
			ans=min(ans,abs(k-(a[r]-a[l-1])));
		}
		if(k-(a[r]-a[l-1])>=0&&k-(a[r]-a[l-1])<m){
			ans=min(ans,k-(a[r]-a[l-1]));
		}
		printf("%d\n",ans==0x3fffffff?-1:ans);
	}
	return 0;
}
2024/11/10 18:54
加载中...