95 分求救
查看原帖
95 分求救
946416
jinyanshao楼主2024/2/29 18:27
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m;
int r[10000005];
int d[10000005];
struct ding {
	int begins, ends;
	int day;
} t[10000005];
bool check(int mid) {
	memset(d, 0, sizeof(d));
	for (int i = 1; i <= mid; i++) {
		d[t[i].begins] += t[i].day;
		d[t[i].ends + 1] -= t[i].day;
	}
	for (int i = 2; i <= n; i++) {
		d[i] += d[i - 1];
		if (d[i] > r[i])  return true;
	}
	return false;
}
signed main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++)cin >> r[i];
	for (int i = 1; i <= m; i++)cin >> t[i].day >> t[i].begins >> t[i].ends;
	int l = 1, r = m;
	while (l < r) {
		int mid = (l + r) / 2;
		if (check(mid)) r = mid;
		else l = mid + 1;
	}
	if (l == m + 1)cout << "0";
	else cout << "-1" << endl << l;
}
2024/2/29 18:27
加载中...