답안 #512277

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
512277 2022-01-16T08:42:14 Z InternetPerson10 코알라 (APIO17_koala) C++17
19 / 100
90 ms 372 KB
#include "koala.h"
#include <bits/stdc++.h>

using namespace std;

int B[100], R[100];

int minValue(int N, int W) {
    // TODO: Implement Subtask 1 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    B[0] = 1;
    playRound(B, R);
    if(R[0] == 2) {
        for(int i = 1; i < N; i++) {
            if(R[i] == 0) return i;
        }
    }
    return 0;
}

int maxValue(int N, int W) {
    // TODO: Implement Subtask 2 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    for(int i = 0; i < 100; i++) {
        B[i] = 1;
    }
    playRound(B, R);
    for(int i = 0; i < 100; i++) {
        B[i] = R[i];
    }
    playRound(B, R);
    for(int i = 0; i < 100; i++) {
        if(R[i] == 3) B[i] = 4;
        else B[i] = 0;
    }
    playRound(B, R);
    for(int i = 0; i < 100; i++) {
        if(R[i] == 5) B[i] = 11;
        else B[i] = 0;
    }
    playRound(B, R);
    for(int i = 0; i < 100; i++) {
        if(R[i] == 12) return i;
    }
    return 0;
}

int greaterValue(int N, int W, int X, int Y) {
    // TODO: Implement Subtask 3 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    int l = 1, r = 9;
    while(true) {
        int mid = (l+r+1)/2;
        B[X] = B[Y] = mid;
        playRound(B, R);
        for(int i = 0; i < 100; i++) B[i] = 0;
        bool x = (R[X] > mid), y = (R[Y] > mid);
        if(x && y) l = mid;
        else if(!x && !y) r = mid;
        else if(x) return 1;
        else if(y) return 0;
    }
    return 0;
}

int greaterValue(int N, int W) {
    return 1 - greaterValue(N, W, 0, 1);
}

struct {
    bool operator()(int x, int y) const { return greaterValue(100, 100, x, y); }
} customLess;

void allValues(int N, int W, int *P) {
    if (W == 2*N) {

        // TODO: Implement Subtask 4 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
    } else {
        // TODO: Implement Subtask 5 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
        vector<int> nums(100);
        for(int i = 0; i < 100; i++) {
            nums[i] = i;
        }
        sort(nums.rbegin(), nums.rend(), customLess);
        for(int i = 0; i < 100; i++) {
            P[nums[i]] = i+1;
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 200 KB Output is correct
2 Correct 5 ms 304 KB Output is correct
3 Correct 4 ms 200 KB Output is correct
4 Correct 4 ms 308 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 372 KB Output is correct
2 Correct 15 ms 328 KB Output is correct
3 Correct 12 ms 312 KB Output is correct
4 Correct 12 ms 312 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 52 ms 324 KB Output is correct
2 Incorrect 1 ms 200 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 200 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 90 ms 296 KB Output isn't correct
2 Halted 0 ms 0 KB -