이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include"robots.h"
#include<bits/stdc++.h>
using namespace std;
bool scos[1000002];
int pos[1000002];
struct str
{
int quantity;
bool tip;
int pi;
};
str v[2000002];
bool cmp(str a, str b)
{
if(a.quantity == b.quantity)
return pos[a.pi] > pos[b.pi];
return a.quantity < b.quantity;
}
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[])
{
int j = 0;
for(int i = 0; i < T; ++i)
{
if(W[i] <= X[A-1])
++pos[i];
if(S[i] <= Y[B-1])
++pos[i];
v[j++] = {W[i], 0, i};
v[j++] = {S[i], 1, i};
}
sort(X, X+A);
sort(Y, Y+B);
sort(v, v + j, cmp);
int b = 0;
int e = 10000002;
bool findd = 0;
int ans = 0;
while(b <= e)
{
int mid = (b + e) / 2;
for(int i = 0; i < T; ++i)
scos[i] = 0;
int Pa = A-1;
int Pb = B-1;
int Ta = mid;
int Tb = mid;
// if(mid == 3)
// cout << mid << '\n';
for(int i = j-1; i >= 0; --i)
{
// if(mid == 3)
// cout << "orz " << Pa << " " << Ta << " " << Pb << " " << Tb << '\n';
if(scos[v[i].pi])
continue;
if(v[i].tip == 0 && (Pa + Ta == 0))
continue;
if(v[i].tip == 1 && (Pb + Tb == 0))
continue;
if(v[i].tip == 0 && v[i].quantity <= X[Pa])
{
// if(mid == 3)
// cout << 1 << " " << v[i].pi << " " << v[i].quantity << " " << X[Pa] << '\n';
scos[v[i].pi] = 1;
--Ta;
if(Ta == 0 && Pa)
--Pa, Ta = mid;
}
if(v[i].tip == 1 && v[i].quantity <= Y[Pb])
{
// if(mid == 3)
// cout << 2 << " " << v[i].pi << " " << v[i].quantity << " " << Y[Pb] << '\n';
scos[v[i].pi] = 1;
--Tb;
if(Tb == 0 && Pb)
--Pb, Tb = mid;
}
}
bool gg = 1;
for(int i = 0; i < T; ++i)
if(!scos[i])
gg = 0;
if(gg)
findd = 1, ans = mid, e = mid - 1;
else
b = mid + 1;
}
if(!findd)
return -1;
return ans;
}
# | 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... |