답안 #1082946

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1082946 2024-09-02T07:59:41 Z ajay Garage (IOI09_garage) C++14
0 / 100
1 ms 348 KB
/* Ajay Jadhav */
 
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <deque>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <queue>
#include <map>
#include <set>
#include <stack>
#include <ctime>
#include <string.h>
#include <climits>
#include <cstring>
using namespace std;
 
 
#define ll          long long
#define pb          push_back
#define pii         pair<int,int>
#define vi          vector<int>
#define vii         vector<pii>
#define mi          map<int,int>
#define mii         map<pii,int>
#define all(a)      (a).begin(),(a).end()
#define x           first
#define y           second
#define sz(x)       (int)x.size()
#define hell        1000000007
#define rep(i,a,b)  for(int i=a;i<b;i++)
#define endl        '\n'
 
 
 
void solve()
{
    int n, m;
    cin >> n >> m;
    vi prices(n + 1), weights(m + 1);
    rep(i, 1, n + 1) {
        cin >> prices[i];
    } 

    rep(i, 1, m + 1) {
        cin >> weights[i];
    }
    
    int ans = 0;
    
    priority_queue<int, vi, greater<int>> available_spaces;
    map<int, int> occupied_spaces;
    queue<int> waiting;

    rep (i, 1, n + 1) {
        available_spaces.push(i);
    }
    

    rep(i, 0, 2 * m) {
        int x;
        cin >> x;
        if (x > 0) {
            // arrived... get smallest available space or push into waiting.
            if (!available_spaces.empty()) {
                int space = available_spaces.top();
                available_spaces.pop();
                occupied_spaces[x] = space;
                ans += weights[x] * prices[space];
            } else {
                waiting.push(x);
            }
        } else {
            int occupied_space = occupied_spaces[abs(x)];
            available_spaces.push(occupied_space);
            occupied_spaces.erase(abs(x));
            if (waiting.size() > 0) {
                occupied_spaces[waiting.front()] = available_spaces.top();
                ans += (weights[waiting.front()] * prices[available_spaces.top()]);
                available_spaces.pop();
                waiting.pop();
            }
        }
    }
    cout <<waiting.size()<<" "<<occupied_spaces.size() << endl;
    cout << ans << endl;
}
 
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t = 1;
    // cin>>t;
    while (t--)
    {
        solve();
    }
    return 0;
}

# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Incorrect 0 ms 348 KB Output isn't correct
4 Incorrect 1 ms 348 KB Output isn't correct
5 Incorrect 0 ms 348 KB Output isn't correct
6 Incorrect 0 ms 348 KB Output isn't correct
7 Incorrect 0 ms 348 KB Output isn't correct
8 Incorrect 1 ms 348 KB Output isn't correct
9 Incorrect 0 ms 348 KB Output isn't correct
10 Incorrect 0 ms 348 KB Output isn't correct
11 Incorrect 0 ms 348 KB Output isn't correct
12 Incorrect 1 ms 348 KB Output isn't correct
13 Incorrect 0 ms 348 KB Output isn't correct
14 Incorrect 1 ms 348 KB Output isn't correct
15 Incorrect 1 ms 348 KB Output isn't correct
16 Incorrect 1 ms 348 KB Output isn't correct
17 Incorrect 1 ms 348 KB Output isn't correct
18 Incorrect 1 ms 348 KB Output isn't correct
19 Incorrect 1 ms 348 KB Output isn't correct
20 Incorrect 1 ms 348 KB Output isn't correct