제출 #1176687

#제출 시각아이디문제언어결과실행 시간메모리
1176687discontinuousGarage (IOI09_garage)C++20
45 / 100
1 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define pb push_back

const ll MOD = 1e9 + 7;
ll n, m, k, a, b, c, d, x, y;

int main() {
    ios::sync_with_stdio(false);
    cout.tie(0); cin.tie(0);

    cin >> n >> m;

    vector<ll> parking(n);
    vector<ll> weights(m);
    
    for(int j = 0; j<n; j++) cin >> parking[j];
    for(int j = 0; j<m; j++) cin >> weights[j];

    // sort(parking.begin(), parking.end());

    ll tt = 2*m;
    // int a = 0;

    ll totalEarnings = 0;
    queue<ll> carqueue;

    vector<bool> occupied(n, false);
    vector<ll> parked(m, -1);
    // bool allOccupied = false;

    while(tt--) {
        ll inp; cin >> inp;
        if(inp > 0) {
            bool done = false;
            for(int j = 0; j<n; j++) {
                if(occupied[j] == false) {
                    occupied[j] = true;
                    totalEarnings += weights[inp-1] * parking[j];
                    
                    parked[inp-1] = j+1;
                    
                    done = true; break;
                }
            }

            if(done == false) {
                carqueue.push(inp);
            }
        }

        else {
            inp = abs(inp);
            occupied[parked[inp-1]-1] = false;

            if(!(carqueue.empty())) {
                totalEarnings += parking[parked[inp-1]-1] * weights[carqueue.front()-1];
                occupied[inp-1] = true;
                carqueue.pop();
            }
        }
    }

    cout << totalEarnings;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...