rt,n、m 也没写反啊。
#include <bits/stdc++.h>
using namespace std;
# define int long long
# define up(i ,x ,y) for(int i = x ; i <= y ; i ++)
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return x*f;}
inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10|48);}
inline void writeln(int x){write(x),putchar('\n');}
inline void writesp(int x){write(x),putchar(' ');}
const int N = 1e6 + 10;
int R[N] ,n ,m;
bool f;
struct SGT {int l ,r ,mn ,lazy;}tr[N << 2];
inline void pushup (int u){tr[u].mn = min (tr[u << 1].mn ,tr[u << 1 | 1].mn);}
inline void build (int u ,int l ,int r){
tr[u].l = l ,tr[u].r = r;
if (l == r) {tr[u].mn = R[l] ; return ;}
int mid = ((l + r) >> 1);
build (u << 1 ,l ,mid);
build (u << 1 | 1 ,mid + 1, r);
pushup (u);
} inline void pushdown (int u){
if (tr[u].lazy){
tr[u << 1].mn += tr[u].lazy ,tr[u << 1 | 1].mn += tr[u].lazy;
tr[u << 1].lazy += tr[u].lazy ,tr[u << 1 | 1].lazy += tr[u].lazy;
tr[u].lazy = 0;
}
} inline void modify (int u ,int L ,int R ,int c){
int l = tr[u].l ,r = tr[u].r;
if (l >= L && r <= R) {tr[u].mn += c ,tr[u].lazy += c; return ;}
pushdown (u);
int mid = ((l + r) >> 1);
if (L <= mid) modify (u << 1 ,L ,R ,c);
if (mid < R) modify (u << 1 | 1 ,L ,R ,c);
pushup (u);
} inline int query (int u ,int L ,int R){
int l = tr[u].l ,r = tr[u].r;
if (l >= L && r <= R) return tr[u].mn;
pushdown (u);
int mid = ((l + r) >> 1) ,res = 0;
if (L <= mid) res = query (u << 1 ,L ,R);
if (mid < R) res = min (res ,query (u << 1 | 1, L ,R));
return res;
} signed main(){
n = read () ,m = read ();
up (i ,1, n) R[i] = read ();
int mns = 1e18;
// up (i ,524 ,735) mns = min (mns ,R[i]);
// writeln (mns);
build (1, 1 ,n);
int record = 0;
up (i ,1, m){
int d = read () ,s = read () ,t = read ();
modify (1 ,s ,t, -d);
int A = query (1 ,s ,t);
// if (i == 1) writeln (A);
if (A < 0) {f = 0 ,record = i ; break;}
}
if (f) writeln (0);
else writeln (-1) ,writeln (record);
return 0;
}