이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "robots.h"
#include <bits/stdc++.h>
const int N = 1e6 + 6 ;
int AA , BB , TT ;
int XX[N] , YY[N] , WW[N] , SS[N] ;
using namespace std ;
bool check(int x){
vector< pair<int, int > > fr , se;
for(int i = 0 ; i < TT ; i++){
fr.push_back({WW[i] , i }) ;
}
sort(fr.begin() , fr.end()) ;
vector<int> vis(N , 0 );
for(int i = 0 ; i < AA && fr.size(); i++){
int j = (int)(lower_bound(fr.begin() , fr.end() , make_pair(XX[i] , 0) ) - fr.begin()) ;
if(!j)continue;
j--;
vector<int> aux;
int k = x ;
while(k-- && j>=0){
int r = fr[j].second ;
if(vis[r]){
k++ ;
j--;
continue ;
}
vis[r] ++ ;
j--;
}
}
for(auto u : fr){
if(!vis[u.second]){
se.push_back({SS[u.second] , u.second}) ;
}
}
return !se.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[i] = X[i] ;
for(int i = 0 ; i < B ; i++)YY[i] = Y[i] ;
for(int i = 0 ; i < T ; i++){
WW[i] = W[i] ;
SS[i] = S[i] ;
}
sort(XX , XX + AA) ;
sort(YY , YY + BB) ;
int l = 1 , r = T ;
int ans = -1;
while(l<=r){
int mid = (l+r) /2;
// cout<<l <<" " << r<<" " << mid<<"\n" ;
if(check(mid)){
ans = mid ;
r = mid - 1 ;
}
else{
l = mid + 1 ;
}
}
return ans ;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |