#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... |