제출 #652503

#제출 시각아이디문제언어결과실행 시간메모리
652503blue코알라 (APIO17_koala)C++17
30 / 100
74 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];
}
 
int greaterValue(int N_, int W) {
    N = N_;
    
    int lo = 2, hi = 30;
    while(lo != hi)
    {
        int mid = (lo+hi)/2;
 
        vi B(N, 0);
        B[0] = B[1] = 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[0] && !taken[1])
            return 0;
 
        if(taken[1] && !taken[0])
            return 1;
 
        if(taken[1] && taken[0])
            lo = mid+1;
        else
            hi = mid-1;
    }
 
    return -1;
}
 
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...