제출 #1283141

#제출 시각아이디문제언어결과실행 시간메모리
1283141Jawad_Akbar_JJ로봇 (IOI13_robots)C++20
14 / 100
153 ms8832 KiB
#include <iostream> #include <vector> #include <set> #include <algorithm> #include "robots.h" using namespace std; int cnt1[50005], cnt2[50005]; bool valid(int T, vector<pair<int,int>> &vc, int A, int X[], int B, int Y[], int tm){ for (int i=0;i<50005;i++) cnt1[i] = cnt2[i] = 0; set<pair<int,int>> st; for (int i=0;i<B;i++) st.insert({Y[i], i}); for (int i=T-1, lst = A - 1;i>=0;i--){ auto u = st.upper_bound({vc[i].second + 1, -1}); if (u == end(st)){ if (lst < 0 or X[lst] <= vc[i].first) return 0; cnt1[lst]++; if (cnt1[lst] == tm) lst--; } else{ cnt2[(*u).second]++; if (cnt2[(*u).second] == tm) st.erase(u); } } return 1; } int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]){ sort(X, X + A); sort(Y, Y + B); vector<pair<int,int>> vc; for (int i=0;i<T;i++){ if (W[i] > X[A-1] and S[i] > Y[B-1]) return -1; vc.push_back({W[i], S[i]}); } sort(begin(vc), end(vc)); int l = 0, r = T + 1; while (l + 1 < r){ int mid = (l + r) / 2; if (valid(T, vc, A, X, B, Y, mid)) r = mid; else l = mid; } return r; }
#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...