本蒟蒻有个点过不去QAQ
查看原帖
本蒟蒻有个点过不去QAQ
566571
crazycharley楼主2023/7/12 14:49
#include <bits/stdc++.h>
using namespace std;
int n,m,le=1,ri,mid,ans,a[1000010],b[1000010],d[1000010],s[1000010],t[1000010],r[1000010];
bool check(int x)
{
	memset(a,0,sizeof a);
	for(int i=1;i<=x;i++)
	{
		a[s[i]]+=d[i];
		a[t[i]+1]-=d[i];
	}
	for(int i=1;i<=n;i++)
	{
		b[i]=b[i-1]+a[i];
		if(b[i]>r[i])return 1;
	}
	return 0;
}
int main()
{
	scanf("%d%d",&n,&m);
	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]);
	}
	ri=m;
	if(!check(ri))
	{
		printf("0\n");
		return 0;
	}
	while(le<=ri)
	{
		mid=(le+ri)/2;
		if(check(mid))
		{
			//cout<<mid<<endl;
			ri=mid-1;
			ans=mid;
		}else
		{
			le=mid+1;
		}
	}
	printf("-1\n%d",ans);
	return 0;
}

sample_in 4 6 1000000000 1000000000 1000000000 1000000000 1000000000 1 4 1000000000 1 4 1000000000 1 4 1000000000 1 4 1000000000 1 4 1000000000 1 4 sample_out -1 2 希望大佬们可以帮帮我

2023/7/12 14:49
加载中...