제출 #7566

#제출 시각아이디문제언어결과실행 시간메모리
7566baneling100로봇 (IOI13_robots)C++98
100 / 100
2132 ms17804 KiB
#include "robots.h" #include <algorithm> #include <queue> using namespace std; pair <int,int> Toy[1000000]; int A, B, T, X[50000], Y[50000], Ans; int OK(int Limit) { priority_queue <int> Q; int i, j, k; j=0; for(i=0 ; i<A ; i++) { while(Toy[j].first<X[i] && j<T) { Q.push(Toy[j].second); j++; } for(k=1 ; k<=Limit ; k++) { if(Q.empty()) break; Q.pop(); } } for(i=j ; i<T ; i++) Q.push(Toy[i].second); if(Q.empty()) return 1; for(i=B-1 ; i>=0 ; i--) for(j=1 ; j<=Limit ; j++) { if(Q.empty()) return 1; k=Q.top(); Q.pop(); if(k>=Y[i]) return 0; } if(Q.empty()) return 1; return 0; } int putaway(int A_, int B_, int T_, int X_[], int Y_[], int W[], int S[]) { int i, Left, Mid, Right; A=A_; B=B_; T=T_; for(i=0 ; i<A ; i++) X[i]=X_[i]; for(i=0 ; i<B ; i++) Y[i]=Y_[i]; for(i=0 ; i<T ; i++) Toy[i]=make_pair(W[i],S[i]); sort(X,X+A); sort(Y,Y+B); sort(Toy,Toy+T); Left=1; Right=T; Ans=-1; while(Left<=Right) { Mid=(Left+Right)/2; if(OK(Mid)) { Right=Mid-1; Ans=Mid; } else Left=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...