36pts求调
查看原帖
36pts求调
1115853
WHy_5056楼主2024/11/10 22:34
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,q,l,r,k;
ll a[1003000],pre[1003000],px[1003000];
int main()
{
	std::ios::sync_with_stdio(false);
	cin>>n>>q;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++){
		pre[i]=pre[i-1]+a[i];
		if(a[i]==0)px[i]=px[i-1]+1;
		else px[i]=px[i-1];
	}
///	for(int i=1;i<=n;i++)cout<<pre[i]<<' ';
///	cout<<endl;
//	for(int i=1;i<=n;i++)cout<<px[i]<<' ';
//	cout<<endl;
	while(q--){
		cin>>l>>r>>k;
		ll sum=pre[r]-pre[l-1];
		ll num=px[r]-px[l-1];
		ll len=r-l+1;
		if(sum>k){
			if(num==0&&sum==k+1){cout<<0;continue;}
			if(sum-k<=len-num)cout<<sum-k;
			else cout<<-1;
		}else if(sum<k){
			if(k-sum<num)cout<<k-sum;
			else if(k-sum>=num)cout<<-1;
		}else{
			if(num==0)cout<<-1;
			else cout<<0;
		}
		cout<<endl;
	}
	return 0;
}

36pts

2024/11/10 22:34
加载中...