이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "robots.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define F first
#define S second
#define sz size()
#define all(x) (x).begin(),(x).end()
const int N = 1e6+2;
vector<pair<ll,ll> > v;
ll n1, n2 , n;
ll xx[N],yy[N];
bool cmp(pair<ll,ll> a, pair<ll,ll> b)
{
return a.S > b.S;
}
bool cmp2(pair<ll,ll> a, pair<ll,ll> b)
{
return a.S < b.S;
}
bool good(ll x)
{
if(n2>0)sort(all(v));
ll lst = 0;
for(int i = 0; i < n1; i++)
{
pair<ll,ll> p = {xx[i],0};
ll pos = (lower_bound(v.begin(),v.end(),p)-v.begin());
pos--;
if(pos<lst) continue;
//reverse(v.begin()+lst,v.begin()+pos+1);
if(n2>0) sort(v.begin()+lst,v.begin()+pos+1,cmp);
lst = max(lst,min(pos+1,lst+x));
//if(lst!=pos+1) sort(v.begin()+lst,v.begin()+pos+1);
// cout << pos << " ";
}
if(lst!=n&&n2>0)
sort(v.begin()+lst,v.begin()+n,cmp2);
for(int i = 0; i < n2; i++)
{
ll cnt = 0;
while(cnt<x&&lst<n&&v[lst].S<yy[i]) cnt++,lst++;
}
return (lst==n);
}
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
n = T , n1 = A , n2 = B;
v.resize(n);
for(int i = 0; i < A; i++) xx[i] = X[i];
for(int i = 0; i < B; i++) yy[i] = Y[i];
for(int i = 0; i < n; i++) v[i] = {W[i],S[i]};
sort(all(v));
sort(xx,xx+n1);
sort(yy,yy+n2);
if(good(n)==0) return -1;
ll l = 0, r = n;
//while(!good(r)) r*=2;
while(l+1<r)
{
ll mid = (l+r)/2;
if(good(mid)) r = mid;
else l = mid;
}
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... |