Submission #684343

#TimeUsernameProblemLanguageResultExecution timeMemory
684343Ahmed57Robots (IOI13_robots)C++14
28 / 100
169 ms15180 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[]);

bool check(int a,int t,int w[],int x[],int X) {
    int i,j = 0,cnt=0;
    for(i=0;i<t;){
        if(j>=a)return 0;
        if(w[i]<x[j]){
            cnt++;
            i++;
        }else{
            j++;
            cnt = 0;
        }
        if(cnt==X) {
            j++;
            cnt=0;
        }
    }
    if(i!=t)return 0;
    return 1;
}

int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
    if(A+B==2&&T==2) {
        sort(X,X+A);
        sort(Y,Y+B);
        if(!A){
            if(S[0]<Y[0]&&S[1]<Y[1])return 1;
            if(S[0]<Y[1]&&S[1]<Y[1])return 2;
            return -1;
        }
        else if(!B){
            if(W[0]<X[0]&&W[1]<X[1])return 1;
            if(W[0]<X[1]&&W[1]<X[1])return 2;
            return -1;
        }else{
            if((W[0]<X[0]&&S[1]<Y[0])||(S[0]<Y[0]&&W[1]<X[0]))return 1;
            if((W[0]<X[0]&&W[1]<X[0])||(S[0]<Y[0]&&S[1]<Y[0]))return 2;
            return -1;
        }
    }
    sort(W,W+T);
    sort(X,X+A);
    if(W[T-1]>X[A-1])return -1;
    int l=1,r=T,ans=T;
    while(l<=r){
        int mid=(l+r)/2;
        if (check(A,T,W,X,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...