Submission #1106037

#TimeUsernameProblemLanguageResultExecution timeMemory
1106037LuvidiRobots (IOI13_robots)C++17
100 / 100
1284 ms24428 KiB
#include <bits/stdc++.h>
#include "robots.h"
using namespace std;

int putaway(int a, int b, int n, int x[], int y[], int w[], int s[]) {
    sort(x,x+a);
    sort(y,y+b);
    for(int i=0;i<n;i++){
        if((!a||w[i]>=x[a-1])&&(!b||s[i]>=y[b-1]))return -1;
    }
    pair<int,int> t[n];
    for(int i=0;i<n;i++)t[i]={w[i],s[i]};
    sort(t,t+n);
    int l=0,r=n;
    while(l<r){
        int m=(l+r)/2;
        int idx=0;
        priority_queue<int> pq;
        for(int i=0;i<a;i++){
            while(idx<n&&t[idx].first<x[i]){
                pq.push(t[idx].second);
                idx++;
            }
            for(int c=0;c<m&&!pq.empty();c++){
                pq.pop();
            }
        }
        while(idx<n){
            pq.push(t[idx].second);
            idx++;
        }
        bool pos=1;
        for(int i=b-1;i>-1;i--){
            for(int c=0;c<m&&!pq.empty();c++){
                if(pq.top()<y[i])pq.pop();
                else{
                    pos=0;
                    break;
                }
            }
            if(!pos)break;
        }
        pos&=pq.empty();
        if(pos)r=m;
        else l=m+1;
    }
    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...