Submission #568226

#TimeUsernameProblemLanguageResultExecution timeMemory
568226hollwo_pelw코알라 (APIO17_koala)C++17
47 / 100
55 ms448 KiB
#include <bits/stdc++.h>
using namespace std;

#include "koala.h"

int R[105], B[105];

void __init__() { memset(R, 0, sizeof R); memset(B, 0, sizeof B); }

int minValue(int N, int W) {
    __init__();
    B[0] = 1;
    playRound(B, R);

    for (int i = 1; i < N; i++)
        if (!R[i]) return i;

    return 0;
}

int maxValue(int N, int W) {
    vector<int> res(N);
    iota(res.begin(), res.end(), 0);

    while ((int) res.size() > 1) {
        __init__();
        for (auto i : res)
            B[i] = W / res.size();
        playRound(B, R);

        int f = *max_element(R, R + N);
        
        res.clear();
        for (int i = 0; i < N; i++)
            if (R[i] == f) res.push_back(i);
    }

    return res[0];
}

int greaterValue(int N, int W) {
    int l = 0, r = sqrt(N * 2);
    while (l <= r) {
        int mid = (l + r) >> 1;
        
        __init__();
        B[0] = B[1] = mid;
        playRound(B, R);

        int c0 = R[0] > B[0], c1 = R[1] > B[1];

        if (c0 ^ c1) {
            if (c0) return 0;
            if (c1) return 1;
        }

        if (c0) {
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }

    return 0;
}

void allValues(int N, int W, int *P) {
    if (W == 2*N) {
        static bool used[105];
        memset(used, 0, sizeof used);

        for (int val = N; val; val --) {
            vector<int> res;
            for (int i = 0; i < N; i++)
                if (!used[i])
                    res.push_back(i);
            
            while ((int) res.size() > 1) {
                __init__();
                for (auto i : res)
                    B[i] = W / res.size();
                playRound(B, R);

                int f = *max_element(R, R + N);

                res.clear();
                for (int i = 0; i < N; i++)
                    if (R[i] == f) res.push_back(i);
            }

            P[res[0]] = val, used[res[0]] = 1;
        }
    } else {
        
    }
}
#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...