只用了差分检查为什么不行呢
查看原帖
只用了差分检查为什么不行呢
1233392
RY111楼主2024/7/12 09:48
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e6+10;
int b[maxn]= {0};
int pro[maxn];
int n,m;
void insert(int l,int r,int c) {
	b[l]+=c;
	b[r+1]-=c;
}
signed main() {
	int flag=0;
	cin>>n>>m;
	for(int i=1; i<=n; i++)
		cin>>pro[i];
	for(int i=1; i<=m; i++) {
		int d,s,t;
		cin>>d>>s>>t;
		insert(s,t,d);

	}
	for(int i=1; i<=n; i++) {
		b[i+1]+=b[i];
		if(b[i]>pro[i]) {
			cout<<"-1"<<endl<<i;
			flag=1;
			break;
		}

	}

	if(flag=0)
		cout<<"0";

	return 0;
}
2024/7/12 09:48
加载中...