比赛 进阶指南第0章测试 评测结果 AAAAAAAAAAAAAAEEEEEE
题目名称 借教室 最终得分 70
用户昵称 2_16鸡扒拌面 运行时间 2.351 s
代码语言 C++ 内存使用 5.26 MiB
提交时间 2026-03-14 09:50:04
显示代码纯文本
#include<bits/stdc++.h>
#define MAXN 100010
#define ll long long
using namespace std;

ll n,m;
ll r[MAXN],d[MAXN],s[MAXN],t[MAXN],diff[MAXN];

bool check(int k)
{
    memset(diff,0,sizeof(diff));
	for(int i=1;i<=k;++i)
	{
		diff[s[i]]+=d[i];
		diff[t[i]+1]-=d[i];
	}
	ll sum=0;
	for(int i=1;i<=n;++i)
	{
		sum+=diff[i];
		if(sum>r[i]) return 0;
	}
	return 1;
}

int main()
{
	freopen("classrooms.in", "r", stdin);
	freopen("classrooms.out", "w", stdout);
	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;
	}
	ll l=1,r=m,ans=0;
	while(l<=r) 
	{
		int mid=(l+r)/2;
		if(check(mid)) l=mid+1;
		else 
		{
			ans=mid;
			r=mid-1;
		}
	}
	cout<<-1<<endl<<ans<<endl;
	return 0;
}