只对了一个点
查看原帖
只对了一个点
349824
WsW_花逝爆零人楼主2020/10/3 22:45
#include<bits/stdc++.h>
using namespace std;
int n,m,r[1000002],d[1000002],s[1000002],t[1000002],sum[1000002];
bool pd(int x){
	memset(sum,0,sizeof(sum));
	for(int i=1;i<=x;i++){
		for(int j=s[i];j<=t[i];j++){
			sum[j]+=d[j];
			if(sum[j]>r[j])return false;
		}
	}
	return true;
}
int main(){
	scanf("%d%d",&n,&m);
	int ri=m,le=1,mid=(m+1)/2;
	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(pd(m)){
		printf("0");
		return 0;
	}
	while(ri>le){
		mid=(ri+le)/2;
		if(pd(mid))le=mid+1;
		else ri=mid;
	}
	printf("-1\n%d",le);
	return 0;
}
2020/10/3 22:45
加载中...