#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
#define mod 1000000007
#define sp << " " <<
#define endl << '\n'
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
int ret = 0;
vector<int> slots(N);
vector<int> customers(N), customers2(N);
for (int i = 0; i < N; i++){
cin >> slots[i];
}
for (int i = 0; i < N; i++){
cin >> customers[i];
}
int o = N - 1;
for (int i = N - 1; i >= 0; i--){
o = min(o, i);
while (customers[i] && o >= 0){
if (i == o){
customers2[i] += min(slots[i], customers[i]);
if (slots[i] == customers2[i])
o--;
if (customers2[i] == customers[i])
break;
continue;
}
if (slots[o] >= customers[i]){
ret += customers[i];
slots[o] -= customers[i];
customers[i] = 0;
}else{
ret += slots[o];
customers[i] -= slots[o];
slots[o] = 0;
o--;
}
}
if (o < 0 && customers[i]){
customers2[i] += customers[i];
}
}
o = N - 2;
for (int i = N - 1; i >= 0; i--){
o = min(o, i - 1);
while (customers[i] && o >= 0){
if (slots[o] >= customers[i]){
ret += customers[i];
slots[o] -= customers[i];
customers[i] = 0;
}else{
ret += slots[o];
customers[i] -= slots[o];
slots[o] = 0;
o--;
}
}
if (o < 0 && customers[i]){
ret -= max(0, customers[i] - slots[i]);
slots[i] = max(0, slots[i] - customers[i]);
customers[i] = 0;
}
}
cout << ret;
}
# | 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... |