#include <algorithm>
#include <iostream>
using namespace std;
const int N = 3000;
int aa[N], cc[N], qu[N], qq[N];
long long ss[N + 1];
int main() {
	ios_base::sync_with_stdio(false), cin.tie(NULL);
	int n, q; cin >> n >> q;
	for (int i = 0; i < n; i++)
		cin >> aa[i];
	for (int i = 0; i < n; i++)
		cin >> cc[i];
	for (int i = n - 1; i >= 0; i--)
		ss[i] = aa[i] + ss[i + 1];
	while (q--) {
		int l, r, a_; cin >> l >> r >> a_, l--, r--;
		int cnt = 0;
		for (int i = r - 1; i >= l; i--) {
			while (cnt && cc[i] < cc[qu[cnt - 1]])
				cnt--;
			qq[i] = cnt ? qu[cnt - 1] : r, qu[cnt++] = i;
		}
		long long ans = 0;
		for (int a = 0, i = l; i < r; i++) {
			int b = min(ss[i] - ss[qq[i]], (long long) a_);
			if (a < b)
				ans += (long long) cc[i] * (b - a), a = b;
			if (a < aa[i]) {
				ans = -1;
				break;
			}
			a -= aa[i];
		}
		cout << ans << '\n';
	}
	return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |