//#pragma GCC optimize(2)
//#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h> // By Lucky Ox
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define int long long
#define double long double
#define endl "\n"
#define pii pair<int, int>
#define tans cout << "答案:"
using namespace std;
using i128 = __int128;
const int mod = 1000000000000002493, INF = 0x3f3f3f3f3f3f3f3f;
int lcm(int x, int y) { return x * y / __gcd(x, y); }
int q_pow(int a, int k) { int res = 1; while (k) { if (k & 1) res = res * a % mod; k >>= 1; a = a * a % mod; } return res; }
int len_10(int x) { int len = 0; while(x) { x /= 10; len ++ ; } return len; }
int len_2(int x) { int len = 0; while(x) { x /= 2; len ++ ; } return len; }
const int N = 1e6 + 10;
int n, m;
int r[N], d[N], s[N], t[N];
bool check(int k) {
for (int i = 1; i <= n; i ++ ) tmp[i] = r[i];
for (int i = 1; i <= k; i ++ ) {
tmp[s[i]] -= d[i];
tmp[t[i] + 1] += d[i];
}
for (int i = 1; i <= n; i ++ ) {
tmp[i] += tmp[i - 1];
if (tmp[i] < 0) return 1;
}
return 0;
}
void solve() {
cin >> n >> m;
for (int i = 1; i <= n; i ++ ) cin >> r[i];
for (int i = n; i; i -- ) r[i] -= r[i - 1];
for (int i = 1; i <= m; i ++ ) cin >> d[i] >> s[i] >> t[i];
int l = 1, r = m;
while (l <= r) {
int mid = (l + r) >> 1;
if (check(mid)) r = mid - 1;
else l = mid + 1;
}
if (l == m + 1) cout << 0 << endl;
else cout << -1 << endl << l << endl;
}
void init() {
}
signed main() {
IOS;
cout << fixed << setprecision(10);
init();
int T = 1;
//cin >> T;
while (T -- ) solve();
return 0;
}
全部代码贴上 for (int i = 1; i <= n; i ++ ) tmp[i] = r[i];
这一串 你用auto tmp = r 就会wa 但不懂为什么会wa啊