| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 71799 | tamtam | 로봇 (IOI13_robots) | C++14 | 0 ms | 0 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "robots.h"
#include<bits/stdc++.h>
#define F first
#define S second
typedef long long ll;
using namespace std;
int n;
int a,b;
int robs[100010];
int robw[100010];
int weight[1000010];
bool check1(int x){
    int l=0;
    int j=0;
    int cur=0;
    while (l<n){
        if (cur==x){
            cur=0;
            j++;
            if (j==a)return 0;
        }
        if (weight[l]<robw[j]){
            l++;
            cur++;
        }else {
            j++;
            cur=0;
            if (j==a)return 0;
        }
    }
    return 1;
}
int bs1(){
    int st=1;
    int en=n;
    int mid;
    int ans=n;
    while (st<=en){
        mid=(st+en)/2;
        if (check1(mid)){
            en=mid-1;
            ans=mid;
        }else {
            st=mid+1;
        }
    }
    return ans;
}
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
    a=A;b=B;n=T;
    for (int i=0;i<A;i++){
        robw[i]=X[i];
    }
    for (int i=0;i<B;i++){
        robs[i]=Y[i];
    }
    for (int i=0;i<n;i++){
        weight[i]=W[i];
    }
    sort(weight,weight+n);
    sort(robs,robs+b);
    sort(robw,robw+a);
    for (int i=0;i<n;i++){
        if (W[i]>=robw[a-1]&&S[i]>=robs[b-1]){
            return -1;
        }
    }
    if (A+B==2&&T==2){
    }
    if (B==0){
        return bs1();
    }
    return 42;
}
int main (){
    int A,B,T;
    int X[100010];
    int Y[100010];
    int W[100010];
    int S[100010];
    cin >>A>>B>>T;
    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<T;i++){
        cin >>W[i]>>S[i];
    }
    cout <<putaway(A,B,T,X,Y,W,S)<<endl;
    return 0;
}
