Submission #592574

#TimeUsernameProblemLanguageResultExecution timeMemory
592574snasibov05Robots (IOI13_robots)C++14
76 / 100
3064 ms24788 KiB
#include "robots.h"
#include <bits/stdc++.h>

using namespace std;

int putaway(int a, int b, int t, int x[], int y[], int w[], int s[]) {

    int ans = -1;
    sort(x, x + a);
    sort(y, y + b);
    reverse(y, y + b);

    vector<pair<int, int>> v;
    for (int i = 0; i < t; ++i) v.push_back({w[i], s[i]});
    sort(v.begin(), v.end());

    int l = 1, r = t;
    while (l <= r){
        int mid = (l + r) / 2;

        int pt = 0;
        multiset<int> st;
        for (int i = 0; i < a; ++i){
            while (pt < t && v[pt].first < x[i]) st.insert(v[pt++].second);
            for (int j = 0; j < mid; ++j){
                if (st.empty()) break;
                st.erase(--st.end());
            }
        }

        while (pt < t) st.insert(v[pt++].second);
        int cur = 0;
        while (!st.empty()){
            cur++;
            if (cur > mid) break;
            for (int i = 0; i < b; ++i){
                auto it = st.lower_bound(y[i]);
                if (it == st.begin()) break;
                it--;
                st.erase(it);
            }
        }

        if (cur <= mid) ans = mid, r = mid - 1;
        else l = mid + 1;
    }

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