只有第8 a了,其余wa,开long long了啊
#include <iostream>
#include <cstring>
#define int long long
using namespace std;
const int N = 1000005;
int n, q, dif[N], a[N], d[N], s[N], t[N], need[N];
inline int rd(){
int w = 1, x = 0;
char c = getchar();
while(c < 48 || c > 57) {
if(c == 45) w *= -1;
c = getchar();
}
while(c >= 48 && c<= 57) {
x = (x << 1) + (x << 3) + (c ^ 48);
c = getchar();
}
return x * w;
}
inline bool check(int x) {
memset(dif, 0, sizeof(dif));
memset(need, 0, sizeof(need));
for(int i = 1; i <= x; i++) {
dif[s[i]] += d[i];
dif[t[i] + 1] -= d[i];
}
for(int i = 1; i <= x; i++) {
need[i] = need[i - 1] + dif[i];
if(need[i] > a[i]) return false;
}
return true;
}
main() {
n = rd(), q = rd();
for(int i = 1; i <= n; i++) {
a[i] = rd();
}
for(int i = 1; i <= q; i++) {
d[i] = rd(), s[i] = rd(), t[i] = rd();
}
if(check(q)) {
cout <<"0\n";
return 0;
}
int l = 0, r = q + 1, ans = 0, mid;
while(l <= r) {
mid = (l + r) / 2;
if(check(mid)) l = mid + 1, ans = mid;
else r = mid - 1;
}
cout << "-1\n" << ans << "\n";
return 0;
}