蒟蒻T了一半大佬救救
查看原帖
蒟蒻T了一半大佬救救
566190
我是歌者楼主2023/7/24 11:08
#include<bits/stdc++.h>
using namespace std;
long long int n,m; 
long long int start[1000010];
long long int en[1000010];
long long int num[1000010],jiaoshi[1000010];
long long int chafen[1000010],ls[1000010];

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>jiaoshi[i];
	}
	for(int i=1;i<=n;i++){
		chafen[i]=jiaoshi[i]-jiaoshi[i-1];
	}
	for(int i=1;i<=m;i++){
		cin>>num[i]>>start[i]>>en[i];
		
	}
	int l=0;
	int r=m;
	while(l<r){
	    memset(ls,0,n);
		int mid=(l+r)/2;
		for(int i=1;i<=mid;i++){
			chafen[start[i]]-=num[i];
			chafen[en[i]]+=num[i];
			
		}
		ls[1]=chafen[1];
		for(int i=2;i<=n;i++){
			ls[i]=ls[i-1]+chafen[i];
			if(ls[i]<0){
				r=mid;
				for(int i=1;i<=n;i++){
		            chafen[i]=jiaoshi[i]-jiaoshi[i-1];
	            }
				continue;
				
			}
		}
		l=mid+1;
	    for(int i=1;i<=n;i++){
		    chafen[i]=jiaoshi[i]-jiaoshi[i-1];
	    }
	}
	if(r==m){
		cout<<0;
		
	}
	else{
		cout<<-1<<endl;
		cout<<r;
	}
	return 0;
}
2023/7/24 11:08
加载中...