Submission #652515

#TimeUsernameProblemLanguageResultExecution timeMemory
652515blueKoala Game (APIO17_koala)C++17
19 / 100
13 ms336 KiB
#include "koala.h"
#include <bits/stdc++.h>
using namespace std;

using vi = vector<int>;
using vvi = vector<vi>;
#define sz(x) int(x.size())

int N;

vi playRound(vi BV)
{
    int B[N];
    int R[N];
    for(int i = 0; i < N; i++)
    {
        B[i] = BV[i];
    }
    playRound(B, R);

    vi RV(N);
    for(int i = 0; i < N; i++)
        RV[i] = R[i];

    return RV;
}

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

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

    return 0;
}

int maxValue(int N_, int W) {
    N = N_;
   
    vi cand;
    for(int i = 0; i < N; i++)
        cand.push_back(i);

    while(sz(cand) > 1)
    {
        int toput = W / sz(cand);

        vi B(N, 0);
        for(int i : cand)
            B[i] = toput;

        vi R = playRound(B);

        vi newcand;

        for(int i = 0; i < N; i++)
        {
            if(B[i] > 0 && R[i] > B[i])
                newcand.push_back(i);
        }
        cand = newcand;
    }

    return cand[0];
}

bool cmp(int a, int b, int W)
{
    int lo = 1, hi = W;
    while(lo != hi)
    {
        int mid = (lo+hi)/2 + 1;

        vi B(N, 0);
        B[a] = B[b] = mid;

        vi R = playRound(B);

        vi taken(N, 0);
        for(int i = 0; i < N; i++)
            if(R[i] > B[i])
                taken[i] = 1;

        if(taken[a] != taken[b])
            return taken[a] < taken[b];

        if(taken[a])
            lo = mid+1;
        else
            hi = mid-1;
    }

    return -1;
}

int greaterValue(int N_, int W) {
    N = N_;
    
    if(cmp(0, 1, W))
        return 1;
    else
        return 0;
}

void allValues(int N_, int W, int *P_) {
    N = N_;

    vi P(N);
    for(int i = 0; i < N; i++)
        P[i] = P_[i];

    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...