제출 #1325298

#제출 시각아이디문제언어결과실행 시간메모리
1325298adiyer코알라 (APIO17_koala)C++20
19 / 100
8 ms444 KiB
#include "koala.h"
#include <bits/stdc++.h>

using namespace std;

int minValue(int n, int w) {
    int b[n], r[n];
    memset(b, 0, sizeof(b));
    b[0] = 1;
    playRound(b, r);
    for(int i = 0; i < n; i++)
        if(r[i] == 0)
            return i;
    memset(b, 0, sizeof(b));
    b[1] = 1;
    playRound(b, r);
    for(int i = 0; i < n; i++)
        if(r[i] == 0)
            return i;
    return 0;
}

int maxValue(int n, int w) {
    int b[n], r[n];
    memset(b, 0, sizeof(b));
    for(int i = 0; i < n; i++) 
        b[i] = 1;
    playRound(b, r);
    memset(b, 0, sizeof(b));
    for(int i = 0; i < n; i++)
        if(r[i] > 1)
            b[i] = 2;
    playRound(b, r);
    memset(b, 0, sizeof(b));
    for(int i = 0; i < n; i++)
        if(r[i] > 1)
            b[i] = 4;
    playRound(b, r);
    memset(b, 0, sizeof(b));
    for(int i = 0; i < n; i++)
        if(r[i] > 1)
            b[i] = 11;
    playRound(b, r);
    for(int i = 0; i < n; i++)
        if(r[i] > 1)
            return i;
    return 0;
}

int greaterValue(int n, int w) {
    int b[n], r[n];
    // 1 <= a[0], a[1] <= 100
    memset(b, 0, sizeof(b));
    b[0] = b[1] = 4;
    playRound(b, r);
    if(r[0] > 4 && r[1] <= 4) return 0;
    if(r[0] <= 4 && r[1] > 4) return 1;
    
    if(r[0] <= 4 && r[1] <= 4){
        // a[0], a[1] <= 15
        memset(b, 0, sizeof(b));
        b[0] = b[1] = 1;
        playRound(b, r);
        if(r[0] > 1 && r[1] <= 1) return 0;
        if(r[0] <= 1 && r[1] > 1) return 1;

        // 7 < a[0], a[1] <= 21
        memset(b, 0, sizeof(b));
        b[0] = b[1] = 2;
        playRound(b, r);
        if(r[0] > 2 && r[1] <= 2) return 0;
        if(r[0] <= 2 && r[1] > 2) return 1;
        // 1+2+3 <= 6 impossible
        // 4+5+6 > 15 impossible
    }

    if(r[0] > 4 && r[1] > 4){
        // a[0], a[1] > 40 
        memset(b, 0, sizeof(b));
        b[0] = b[1] = 7;
        playRound(b, r);
        if(r[0] > 7 && r[1] <= 7) return 0;
        if(r[0] <= 7 && r[1] > 7) return 1;
        // > 7 && > 7 -> a[0] >= 100, a[1] >= 100 impossible
        // <= 7 && <= 7 -> a[0] <= 36, a[1] <= 36 impossible
    }
    return 0;
}

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.
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...