Submission #1172274

#TimeUsernameProblemLanguageResultExecution timeMemory
1172274daniutaiyangGarage (IOI09_garage)C++20
100 / 100
1 ms328 KiB
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m; cin >> n >> m;
    int rates[n],weights[m+1],events[m*2],occupies[m+1],ans=0;
    deque<int> waiting;
    priority_queue<int, vector<int>, greater<int>> space_av;
    for(int i=0; i<n; i++){
        cin >> rates[i];
        space_av.push(i);
    }
    for(int i=1; i<=m; i++){
        cin >> weights[i];
        occupies[i] = -1;
    }
    for(int i=0; i<m*2; i++) cin >> events[i];
    for(auto event : events){
        if(event>0){
            if(!space_av.empty()){
                occupies[event] = space_av.top();
                space_av.pop();
                ans+=weights[event]*rates[occupies[event]];
            }else waiting.push_back(event);
        }else{
            space_av.push(occupies[-event]);
            occupies[-event] = -1;
            if(!waiting.empty()){
                occupies[waiting.front()] = space_av.top();
                space_av.pop();
                ans+=weights[waiting.front()]*rates[occupies[waiting.front()]];
                waiting.pop_front();
            }
        }
    }
    cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...