Submission #1325318

#TimeUsernameProblemLanguageResultExecution timeMemory
1325318vicvicRobots (IOI13_robots)C++20
14 / 100
1270 ms8636 KiB
#include <bits/stdc++.h>
#include "robots.h"
using namespace std;

int putaway (int n, int m, int t, int x[], int y[], int w[], int s[])
{
    sort (x, x+n), sort (y, y+m);
    vector <int> ind (t, 0);
    for (int i=0;i<t;i++)
        ind[i]=i;
    sort (ind.begin(), ind.end(), [&] (int a, int b) {return w[a]<w[b];});
    int st=1, dr=t+1, poz=t+1;
    priority_queue <int> pq;
    auto check = [&] (int val)
    {
        int nxt=0;
        for (int i=0;i<n;i++)
        {
            while (nxt<t && w[ind[nxt]]<x[i])
                pq.push (s[ind[nxt++]]);
            int remain=val;
            while (!pq.empty() && remain--)
                pq.pop ();
        }
        while (nxt<t)
            pq.push (w[ind[nxt++]]);
        for (int i=m-1;i>=0;i--)
        {
            int remain=val;
            while (remain-- && !pq.empty() && pq.top()<y[i])
                pq.pop ();
        }
        return pq.empty();
    };
    while (st<=dr)
    {
        int mij = (st+dr) >> 1;
        while (!pq.empty())
            pq.pop ();
        if (check (mij))
            dr=mij-1, poz=mij;
        else
            st=mij+1;
    }
    return (poz==t+1?-1:poz);
}
#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...