100分求助!!!
查看原帖
100分求助!!!
1114484
chenxiqing楼主2024/4/25 20:06
#include<bits/stdc++.h>
using namespace std;
int n,m;
int r[1000005],d[1000005],s[1000005],t[1000005],cf[1000005];
bool judge(int x){
	memset(cf,0,sizeof(cf));
	int sum=0;
	for(int i=1;i<=x;i++){
		cf[s[i]]+=d[i];
		cf[t[i]+1]-=d[i];
	}
	for(int i=1;i<=n;i++){
		sum+=cf[i];
		if(sum>r[i])
			return false;
	}
	return true;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		scanf("%d",&r[i]);
	for(int i=1;i<=m;i++)
		scanf("%d%d%d",&d[i],&s[i],&t[i]);
	if(judge(m)==true){
		cout<<'0';
		return 0;
	}
	int l=1;
	int r=m;
	while(l<r){
		int mid=(l+r)/2;
		if(judge(mid)==true)
			l=mid+1; 
		else
			r=mid;
	}
	cout<<"-1"<<endl<<l; 
	return 0;
}

为啥错了!!!

2024/4/25 20:06
加载中...