10
查看原帖
10
1342927
binyage楼主2025/1/13 09:56
#include<bits/stdc++.h> 
using namespace std;
long long r[1000011],n,m,d[1000011],s[1000011],t[1000005],as[1000005]={};
bool check(long long x)
{
	memset(as,0,sizeof(as));
	for(int i=1;i<=x;i++)
	{
		as[s[i]]+=d[i];
		as[t[i]+1]-=d[i];
	}
	int sum=0;
	for(int i=1;i<=n;i++)
	{
		sum+=as[i];
		if(sum>r[i])
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>r[i];
	}
	for(int i=1;i<=m;i++)
	{
		cin>>d[i]>>s[i]>>t[i];
	}
	if(check(m))
	{
		cout<<0;
		return 0;
	}
	long long l=1,r=m;
	while(l<r)
	{
		int mid=(l+r)>>2;
		if(check(mid))
		{
			l=mid+1;
		}
		else
		{
			r=mid;
		}
	}
	cout<<-1<<endl<<l;
	return 0;
}
2025/1/13 09:56
加载中...