Submission #1186136

#TimeUsernameProblemLanguageResultExecution timeMemory
1186136GabpRobots (IOI13_robots)C++20
100 / 100
1243 ms13040 KiB
#include<bits/stdc++.h>
#include"robots.h"
using namespace std;

int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
  vector<int> x(A), y(B);
  for (int i = 0; i < A; i++) x[i] = X[i];
  for (int i = 0; i < B; i++) y[i] = -Y[i];
  sort(x.begin(), x.end());
  sort(y.begin(), y.end());
  
  vector<pair<int,int>> a(T);
  for (int i = 0; i < T; i++) a[i] = {W[i], S[i]};
  sort(a.begin(), a.end());
  
  int lo = 1, hi = T;
  int ans = -1;
  while (lo <= hi) {
    int mid = lo + (hi - lo) / 2;
    
    int p = 0;
    priority_queue<int> pq;
    for (auto i: x) {
      while (p < T && a[p].first < i) {
        pq.push(a[p++].second);
      }
      for (int j = 0; j < mid && !pq.empty(); j++) pq.pop();
    }
    for (int i = p; i < T; i++) pq.push(a[i].second);
    for (auto i: y) {
      for (int j = 0; j < mid && !pq.empty() && pq.top() < -i; j++) pq.pop();
    }
    
    if (!pq.empty()) {
      lo = mid + 1;
    } else {
      ans = mid;
      hi = 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...