AcWing 503. 借教室
原题链接
简单
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e6 + 5;
ll b[N];
int n,m;
int s[N],t[N];
ll w[N];
int d[N];
int check(int mid)
{
memset(b,0,sizeof(b));
for(int i = 1;i <= mid;i++)
{
b[s[i]] += d[i];
b[t[i] + 1] -= d[i];
}
ll sum = 0;
for(int i = 1;i <= n;i++)
{
sum += b[i];
if(sum > w[i])return 0;
}
return 1;
}
int main()
{
cin >> n >> m;
for(int i = 1;i <= n;i++)cin >> w[i];
for(int i = 1;i <= m;i++)
{
cin >> d[i] >> s[i] >> t[i];
}
int l = 0,r = m;
while(l < r)
{
int mid = (l + r + 1) >> 1;
if(check(mid))l = mid;
else r = mid - 1;
}
if(r != m)
{
cout << -1 << endl;
cout << r + 1 << endl;
}
else cout << 0 << endl;
return 0;
}