Submission #1317547

#TimeUsernameProblemLanguageResultExecution timeMemory
1317547nikaa123Robots (IOI13_robots)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h>
#include "robots.h"
using namespace std;

int a, b, n;
vector <pair<int,int>> v;
int x[200005],y[200005];

bool check(int mid) {
    priority_queue <int, vector <int>, greater<int>> q;
    int cur = 0;
    for (int i = 0; i < a; i++) {
        while (cur < n && v[cur].first <= x[i]) {
            q.push(v[cur].second);
            cur++;
        }
        int cnt = mid;
        while (cnt && !q.empty()) {
            q.pop();
            cnt--;
        }
    }
    while (cur < n) {
        q.push(v[cur].second);
        cur++;
    }
    for (int i = 0; i < b; i++) {
        if (q.empty()) break;
        if (q.top() > y[i]) return false;
        int cnt = mid;
        while (cnt && !q.empty()) {
            q.pop();
            cnt--;
        }
    }
    if (!q.empty()) return false;
    return true;
}

int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
    a = A; b = B; n = T;
    for (int i = 0; i < a; i++) {
        x[i] = X[i];
    }
    for (int i = 0; i < b; i++) {
        y[i] = Y[i];
    }
    for (int i = 0; i < n; i++) {
        v.emplace_back(make_pair(W[i],S[i]));
    }
    sort(v.begin(),v.end());
    sort(x,x+a);
    sort(y,y+b,greater<int>());
    int l = 0; int r = T;
    int ans = -1;
    while (l <= r) {
        int mid = (l+r)/2;
        if (check(mid)) {
            r = mid - 1;
            ans = mid;
        } 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...