Submission #1317866

#TimeUsernameProblemLanguageResultExecution timeMemory
1317866tsetsenbilegRobots (IOI13_robots)C++20
0 / 100
1 ms332 KiB
#include "robots.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
using pr = pair<int, int>;
const int INF = 1e9+7, MOD = 1e9+7;

int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
    // return 9;
    sort(X, X + A);
    sort(Y, Y + B);
    vector<pr> toy(T);
    for (int i = 0; i < T; i++) {
        toy[i] = {W[i], S[i]};
        bool canHandle = false;
        for (int j = 0; j < A && !canHandle; j++) if (X[j] > W[i]) canHandle = true;
        for (int j = 0; j < B && !canHandle; j++) if (Y[j] > S[i]) canHandle = true;
        if (!canHandle) return -1;
    }
    sort(toy.begin(), toy.end());
    int l = 1, r = T;
    while (l < r) {
        int m = (l + r) >> 1;
        bool good = 0;
        priority_queue<pr> sz;
        vector<bool> used(T, 0);
        for (int i = 0, j = 0; i < A; i++) {
            while (j < T && X[i] > toy[j].first) {
                sz.push({toy[j].second, j});
                j++;
            }
            for (int k = 0; k < m; k++) {
                if (sz.empty()) break;
                auto [s, p] = sz.top(); sz.pop();
                used[p] = 1;
            }
        }
        vector<int> unused;
        for (int i = 0; i < T; i++) {
            if (!used[i]) unused.pb(toy[i].second);
        }
        sort(unused.begin(), unused.end());
        for (int i = 0, j = 0; i < B; i++) {
            for (int k = 0; k < m; k++) {
                if (j < unused.size() && unused[j] < Y[i]) {
                    j++;
                }
                else break;
            }
            if (j == unused.size()) {
                good = 1;
                break;
            }
        }
        if (unused.empty()) good = 1;
        if (good) r = m;
        else l = m+1;
    }
    if (l == T) return -1;
    else return l;
}
#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...