//#include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
int main(){
    int N, slot, user;
    cin >> N;
    vector<int> slots(N+1,0);
    vector<int> users(N+1,0);
    for (int i = 0; i < N; ++i){
        cin >> slots[i];
    }
    for (int i = 0; i < N; ++i){
        cin >> users[i];
    }
    int sol = 0;
    vector<int> available;
    for (int i = 1; i < N; ++i){
        if (slots[i-1] > 0){
            available.push_back(i-1);
        }
        //  for (int i: available){
        //      cout<<i<<' ';
        //  }
        //  cout<<endl;
        for (int z = available.size()-1; z >= 0; --z){
            int j = available[z];
            if (users[i] > slots[j]){
                users[i] -= slots[j];
                sol += slots[j];
                available.pop_back();
                slots[j]= 0;
            }else{
                sol += users[i];
                slots[j] -= users[i];
                users[i] = 0;
                if (slots[j] == 0) available.pop_back();
                break;
            }
        }
    }
    for (int i = 0; i <N; ++i){
        if (users[i] > 0 && slots[i] > 0){
            if (users[i] >= slots[i]){
                users[i] -= slots[i];
                slots[i]= 0;
            }else{
                slots[i] -= users[i];
                users[i] = 0;
            }
        }
    }
    for (int i = 0; i < N; ++i){
        sol-= users[i];
    }
    cout<<sol<<endl;
}
| # | 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... |