이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "robots.h"
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 1001000
#define mp make_pair
#define fs first
#define sn second
using namespace std;
int l,r,now,a[N],b[N];
pair<int,int>s[N];
priority_queue<int>d;
bool check(int t,int A, int B, int T)
{
while(!d.empty())d.pop();
now=1;
for(int i=1;i<=A;++i){
while(now<=T&&s[now].fs<a[i])d.push(s[now++].sn);
for(int j=1;j<=t&&!d.empty();++j)
d.pop();
}
while(now<=T)d.push(s[now++].sn);
for(int i=B;i>0&&!d.empty();--i)
for(int j=1;j<=t&&!d.empty();++j)
if(d.top()<b[i])d.pop();
return d.empty();
}
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
for(int i=1;i<=A;++i)
a[i]=X[i-1];
for(int i=1;i<=B;++i)
b[i]=Y[i-1];
for(int i=1;i<=T;++i)
s[i]=mp(W[i-1],S[i-1]);
sort(a+1,a+1+A);
sort(b+1,b+1+B);
sort(s+1,s+1+T);
if(!check(T,A,B,T))return -1;
l=(T+(A+B)-1)/(A+B);
r=T-1;
while(l<r)
{
int mid=l+r>>1;
if(check(mid,A,B,T))r=mid;
else l=mid+1;
}
return l;
}
컴파일 시 표준 에러 (stderr) 메시지
robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:46:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
46 | int mid=l+r>>1;
| ~^~
# | 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... |