이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "robots.h"
using namespace std;
typedef pair <int,int> pp;
pp A[1000002];
int pos[1000002],nextt[1000002],C[1000002];
int check(int a,int b,int n,int X[],int Y[],int k)
{
    for (int i=0;i<=b;i++)
        nextt[i]=i,C[i]=0;
    vector <int> P;
    for (int i=n-1;i>=0;i--)
    {
        int p=pos[i];p=nextt[p];
        if (p==b) P.push_back(A[i].first);
        else
        {
            assert(C[p]<k);
            C[p]++;
            if (C[p]==k) nextt[p]=nextt[p+1];
        }
    }
    //if ((long long) P.size()>(long long)a*k) return 0;
   /* cout<<"cac "<<k<<endl;
    for (int i=0;i<P.size();i++)
        cout<<P[i]<<' ';cout<<endl;*/
    for (int i=0;i<P.size();i+=k)
        if (i/k>=a||P[i]>X[i/k]) return 0;
    return 1;
}
int putaway(int a,int b,int n,int X[],int Y[],int W[],int S[])
{
    sort(X,X+a,greater<int>());sort(Y,Y+b);
    for (int i=0;i<n;i++)
    {
        A[i].first=W[i];
        A[i].second=S[i];
    }
    sort(A,A+n);
    for (int i=0;i<n;i++)
    {
        int d=0;int c=b-1;
        pos[i]=b;
        while (d<=c)
        {
            int mid=(d+c)/2;
            if (Y[mid]>=A[i].second) {pos[i]=mid;c=mid-1;}
            else d=mid+1;
        }
       // cout<<A[i].first<<' '<<A[i].second<<' '<<pos[i]<<endl;
    }
    int d=0;int c=n;int res=-1;
    while (d<=c)
    {
        int mid=(d+c)/2;
        if (check(a,b,n,X,Y,mid)) {res=mid;c=mid-1;}
        else d=mid+1;
    }
    return res;
}
/*int main()
{
    freopen("robotz.inp","r",stdin);
    freopen("robotz.out","w",stdout);
    int a,b,n,X[50002],Y[50002],W[1000002],S[1000002];
    cin>>a>>b>>n;
    for (int i=0;i<a;i++) cin>>X[i];
    for (int i=0;i<b;i++) cin>>Y[i];
    for (int i=0;i<n;i++) cin>>W[i]>>S[i];
    cout<<putaway(a,b,n,X,Y,W,S);
}*/
컴파일 시 표준 에러 (stderr) 메시지
robots.cpp: In function 'int check(int, int, int, int*, int*, int)':
robots.cpp:28:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0;i<P.size();i+=k)
                  ~^~~~~~~~~| # | 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... |