제출 #1263823

#제출 시각아이디문제언어결과실행 시간메모리
1263823repmann로봇 (IOI13_robots)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h>
#include "robots.h"
using namespace std;
int A, B, T;
int putaway(int a, int b, int t, int *X, int *Y, int *W, int *S)
{
  A = a;
  B = b;
  T = t;
  sort(X, X + A);
  sort(Y, Y + B);
  for(int i = 0; i < T; i++) if((!A || (W[i] >= X[A - 1])) && (!B || (S[i] >= Y[B - 1]))) return -1;
  vector <pair <int, int>> V;
  for(int i = 0; i < T; i++) V.push_back({W[i], S[i]});
  sort(V.begin(), V.end());
  int ret = -1, l = 1, r = T, s;
  auto OK = [&]()
  {
    priority_queue <int> H;
    int j = 0;
    for(int i = 0; i < A; i++)
    {
      while((j < T) && (V[j].first <= X[i])) {H.push(V[j].second); j++;}
      for(int k = 0; (k < s) && H.size(); k++) H.pop();
    }
    for(j; j < T; j++) H.push(V[j].second);
    for(int i = B - 1; i >= 0; i--)
    {
      for(int k = 0; (k < s) && H.size(); k++)
      {
        if(H.top() > Y[i]) return false;
        H.pop();
      }
    }
    return !H.size();
  };
  while(l <= r)
  {
    s = (l + r) >> 1;
    if(!OK()) l = s + 1;
    else {r = s - 1; ret = s;}
  }
  return ret;
}
//int main()
//{
//  int a, b, t;
//  cin >> a >> b >> t;
//  int x[a], y[b], w[t], s[t];
//  for(int i = 0; i < a; i++) cin >> x[i];
//  for(int i = 0; i < b; i++) cin >> y[i];
//  for(int i = 0; i < t; i++) cin >> w[i];
//  for(int i = 0; i < t; i++) cin >> s[i];
//  cout << putaway(a, b, t, x, y, w, s) << '\n';
//  return 0;
//}
#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...