제출 #1317857

#제출 시각아이디문제언어결과실행 시간메모리
1317857tsetsenbileg로봇 (IOI13_robots)C++20
0 / 100
0 ms332 KiB
#include "robots.h" #include <bits/stdc++.h> using namespace std; #define pb push_back using pr = pair<int, int>; const int INF = 1e9+7, MOD = 1e9+7; int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) { // return 9; sort(X, X + A); sort(Y, Y + B); vector<pr> toy(T); for (int i = 0; i < T; i++) { toy[i] = {W[i], S[i]}; } sort(toy.begin(), toy.end()); sort(W, W + T); vector<int> can(A); for (int i = 0; i < A; i++) { auto it = upper_bound(W, W + T, X[i]) - W - 1; can[i] = it; } int l = 0, r = T+1; while (l < r) { int m = (l + r) >> 1; bool good = 0; priority_queue<pr> sz; vector<bool> used(T, 0); for (int i = 0, j = 0; i < A; i++) { while (j <= can[i]) { sz.push({toy[j].second, j}); j++; } for (int k = 0; k < m; k++) { if (sz.empty()) break; auto [s, p] = sz.top(); sz.pop(); used[p] = 1; } } vector<int> unused; for (int i = 0; i < T; i++) { if (!used[i]) unused.pb(toy[i].second); } sort(unused.begin(), unused.end()); for (int i = 0, j = 0; i < B; i++) { for (int k = 0; k < m; k++) { if (j < unused.size()) { if (unused[j] <= Y[i]) { j++; } else break; } else good = 1; } } if (good) r = m; else l = m+1; } if (l == T+1) return -1; else return l; }
#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...