题目链接
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1000010;
#define int long long
int n,m;
int d[N],s[N],t[N],a[N],b[N];
bool check(int mid)
{
for(int i=1;i<=n;i++)b[i]=a[i]-a[i-1];
for(int i=1;i<=mid;i++)
{
b[s[i]]-=d[i];
b[t[i]+1]+=d[i];
}
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=b[i];
if(sum<0)return true;
}
return false;
}
signed main()
{
cin>>n>>m;
int l=0,r=m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++)cin>>d[i]>>s[i]>>t[i];
while(l<r)
{
int mid=l+r>>1;
if(check(mid))r=mid;
else l=mid+1;
}
if(check(r))cout<<-1<<endl<<r<<endl;
else cout<<0<<endl;
}