Submission #210137

#TimeUsernameProblemLanguageResultExecution timeMemory
210137mohamedsobhi777Robots (IOI13_robots)C++14
28 / 100
1085 ms45608 KiB
#include "robots.h"
#include <bits/stdc++.h>
const int N = 1e6 + 6 ;
using namespace std ; 

int AA , BB  , TT  ;
vector<int> XX , YY , WW , SS ; 
vector<int> appear[N] ; 


bool check(int x){

    priority_queue<int> q ; 

    for(int i = 0 ; i < AA ; i++){
        for(int j = 0 ; j < appear[i].size() ; j++){
            q.push(appear[i][j]) ; 
        }
        int sz = min((int)q.size() , x) ; 
        for(int j = 0 ; j < sz ; j++){
            q.pop() ; 
        }
    }
    for(int i = 0 ; i < appear[AA].size() ; i++){
        q.push(appear[AA][i]) ; 
    }
    for(int i = 0 ; i < BB ; i++){
        int sz = min((int)q.size() , x ) ; 
        for(int j = 0 ; j < sz ; j++){
            if(q.top() < YY[i])
            {
                q.pop() ; 
            }
            else break; 
        }
    }
    return !q.size(); 
}
        
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
    AA = A ; BB = B ; TT = T ; 
    for(int i = 0 ; i < A ; i++){
        XX.push_back(X[i]) ; 
    }
    for(int i = 0 ; i < B ; i++){
        YY.push_back(Y[i]) ; 
    }
    sort(XX.begin() , XX.end()) ; 
    sort(YY.begin() , YY.end()) ;


    for(int i = 0 ; i < T ; i++){
        int i1 = upper_bound(XX.begin() , XX.end() , W[i] ) - XX.begin() ; 
        int i2 = upper_bound(YY.begin() , YY.end(), S[i]) - YY.begin() ; 
        if(i1==A && i2==B)
            return -1 ; 
        appear[i1].push_back(S[i]) ; 
    }    

    for(int i = 0 ; i < A ; i++){
        sort(appear[i].begin() , appear[i].end() , greater<int>()) ;
    }
    
    int l = 1 , r = T ;
    int ans = -1; 
    while(l<=r){
        int mid = (l+r) /2;
        if(check(mid)){
            ans = mid ; 
            r = mid - 1 ; 
        }
        else{
            l = mid + 1 ; 
        }
    }
    return ans ;
}

Compilation message (stderr)

robots.cpp: In function 'bool check(int)':
robots.cpp:16:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j = 0 ; j < appear[i].size() ; j++){
                         ~~^~~~~~~~~~~~~~~~~~
robots.cpp:24:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0 ; i < appear[AA].size() ; i++){
                     ~~^~~~~~~~~~~~~~~~~~~
#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...