注释给到啦
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n, m, room[N], c[N];
struct node{
int d, s, t;
}a[N];
bool check(int mid) {
memset(c, 0, sizeof(c));
for (int i = 1; i <= mid; i++) {
c[a[i].s] += a[i].d;
c[a[i].t + 1] -= a[i].d;
}
for (int i = 1; i < n; i++) {
c[i + 1] += c[i];
if (c[i] > room[i]) {
return false;
}
}
return true;
}
int main(){
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> room[i];
for (int i = 1; i <= m; i++) cin >> a[i].d >> a[i].s >> a[i].t;
int l = 1, r = m;
while (l < r) {
int mid = (l + r) / 2;
if (check(mid)) l = mid + 1;
else r = mid;
}
cout << -1 << endl << l;
return 0;
}