이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "robots.h"
#include <bits/stdc++.h>
#define mk make_pair
#define fr first
#define sc second
using namespace std;
const int N = 1e6 + 5, M = 5e4 + 5;
int a, b, n;
pair <int, int> ar[N];
priority_queue <int> q;
inline bool check(int k, int x[], int y[])
{
while ( !q.empty() ) q.pop();
int j = 0, cn = 0;
for (int i = 0; i < a; i++)
{
while ( j < n && ar[j].fr < x[i] )
q.push( ar[j].sc ), j++;
cn = 0;
while ( !q.empty() && cn < k )
q.pop(), cn++;
}
while (j < n)
q.push( ar[j].sc ), j++;
for (int i = b - 1; i >= 0; i--)
{
cn = 0;
while (!q.empty() && cn < k && q.top() < y[i])
q.pop(), cn++;
}
if (q.empty())
return true;
return false;
}
bool fl = 0;
int putaway(int A, int B, int T, int x[], int y[], int w[], int s[])
{
a = A, b = B;
n = T;
sort(x, x + a);
sort(y, y + b);
for (int i = 0; i < n; i++)
{
ar[i].fr = w[i], ar[i].sc = s[i];
if (ar[i].fr >= x[a - 1] && ar[i].sc >= y[b - 1]) fl = 1;
}
if (fl) return -1;
sort(ar, ar + n);
int l = -1, r = n;
while (r - l > 1)
{
int md = (l + r) >> 1;
if ( check(md, x, y) )
r = md;
else
l = md;
}
return r;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |