为何第21个测试点过不了?
查看原帖
为何第21个测试点过不了?
682342
zzzcdq楼主2022/2/26 11:12
#include <bits/stdc++.h>
#define maxn 1000003
using namespace std;
int n,m,l,r,mid,c[maxn],d[maxn],s[maxn],t[maxn],z[maxn];
bool check(int x){
	memset(z,0,sizeof(z));
	for(int i = 1;i <= x;i ++){
		z[s[i]] -= d[i];
		z[t[i] + 1] += d[i];
	}
	for(int i = 1;i <= n;i ++){
		z[i] += z[i - 1];
		if(z[i] + c[i] < 0) return 0;
	}
	return 1;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i = 1;i <= n;i ++) scanf("%d",&c[i]);
	for(int i = 1;i <= m;i ++) scanf("%d%d%d",&d[i],&s[i],&t[i]);
	l = 1;r = m + 1;
	while(l <= r){
		mid = l + r >> 1;
		if(check(mid)) l = mid + 1;
		else r = mid - 1;
	}
	if(r == m + 1) cout << 0;
	else cout << -1 << endl << r + 1 << endl;
	return 0;
}
2022/2/26 11:12
加载中...