蒟蒻求助,75分
查看原帖
蒟蒻求助,75分
305904
yezerui11楼主2023/4/12 18:02
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long rest[1000010];
long long l[1000010],r[1000010],d[100010];
long long x[1000010];
long long qzh[1000010];
bool check(long long mid){
	memset(x,0,sizeof(x));
	for(int i=1;i<=mid;i++){
		x[l[i]]+=d[i];
		x[r[i]+1]-=d[i];
	}
	for(int i=1;i<=n;i++){
		qzh[i]=qzh[i-1]+x[i];
		if(qzh[i]>rest[i]){
			return 0;
		}
	}
	return 1;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>rest[i];
	}
	for(int i=1;i<=m;i++){
		cin>>d[i]>>l[i]>>r[i];
	}
	long long l2=1,r2=m;
	if(check(m)){
		cout<<0;
		return 0;
	}
	while(l2<r2){
		long long mid=(l2+r2)/2;
		if(check(mid)){
			l2=mid+1;
		}else{
			r2=mid;
		}
	}
	cout<<-1<<endl<<l2;
	return 0;
}

代码如上,WA16-20

2023/4/12 18:02
加载中...