#include <bits/stdc++.h>
using namespace std;
int main() {
//~ ifstream cin("input.txt");
int n;
cin >> n;
vector<int> a(n), b(n);
int cnt = 0;
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
for (int i = 0; i < n; ++i) {
cin >> b[i];
cnt += b[i];
}
//~ cout << cnt << endl;
vector<int> avl;
int res = 0;
int left = 0;
for (int i = 0; i < n; ++i) {
avl.push_back(i);
while (left > 0 && avl.size()) {
int j = avl.back();
int take = min(a[j], left);
res -= take;
left -= take;
a[j] -= take;
if (a[j] == 0) {
avl.pop_back();
}
}
while (avl.size() && b[i] > 0) {
int j = avl.back();
int take = min(a[j], b[i]);
res += take;
b[i] -= take;
a[j] -= take;
if (a[j] == 0) {
avl.pop_back();
}
}
int take = min(b[i], a[i]);
b[i] -= take;
a[i] -= take;
left += b[i];
}
//~ for (int i = n - 1; i >= 0; --i) {
//~ int take = min(b[i], a[i]);
//~ b[i] -= take;
//~ res -= b[i];
//~ }
cout << res << "\n";
}
/*
10
0 0 0 0 0 0 0 1 1 1
1 0 0 1 0 1 0 0 0 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |