提交时间:2026-01-04 15:19:16

运行 ID: 80503

#include <iostream> #include <cstring> using namespace std; long long n, m; long long r[1000005], d[1000005], s[1000005], t[1000005]; long long delta[1000005]; bool check(long long num) { memset(delta, 0, sizeof(delta)); for ( long long i = 1 ; i <= num ; ++ i ) { delta[s[i]] += d[i]; delta[t[i] + 1] -= d[i]; } long long sum = 0; for ( long long i = 1 ; i <= n ; ++ i ) { sum += delta[i]; if ( sum > r[i] ) { return 0; } } return 1; } int main() { cin >> n >> m; for ( long long i = 1 ; i <= n ; ++ i ) { cin >> r[i]; } for ( long long i = 1 ; i <= m ; ++ i ) { cin >> d[i] >> s[i] >> t[i]; } long long left = 0, right = m; bool ans = 1; while ( right > left ) { long long mid = (left + right + 1) / 2; if ( check(mid) ) { left = mid; }else { ans = 0; right = mid - 1; } } if ( ans ) { cout << 0 << endl; }else { cout << -1 << endl << left + 1 << endl; } return 0; }