Submission #226155

# Submission time Handle Problem Language Result Execution time Memory
226155 2020-04-22T16:44:46 Z theStaticMind Koala Game (APIO17_koala) C++14
Compilation error
0 ms 0 KB
#include "koala.h"
#include <bits/stdc++.h>
using namespace std;

int B[105], R[105];

int minValue(int N, int W) {

    for(int i = 0; i < N; i++) B[i] = 1;

    playRound(B, R);

    for(int i = 0; i < N; i++) B[i] = 0;
    for(int i = 0; i < N; i++){
        if(R[i] > 1){
            B[i] = 1;
            break;
        }
    }

    playRound(B, R);

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

}


int maxValue(int N, int W) {
    bool rem[105];
    for(int i = 0; i < N; i++) rem[i] = true;
    auto recalc = [&](){
        int sum = 0;
        for(int i = 0; i < N; i++) if(rem[i]) sum++;
        for(int i = 0; i < N; i++){
            if(rem[i]) B[i] = W / sum;
            else B[i] = 0;
        }
    };

    for(int t = 0; t < 4; t++){
        recalc();
        playRound(B, R);
        for(int i = 0; i < N; i++){
            if(R[i] <= B[i]) rem[i] = false;
        }
    }

    for(int i = 0; i < N; i++){
        if(rem[i]) return i;
    }
    assert(0);
}

bool comp(int x, int y){
    int l = 1, r = 8;

    while(l <= r){
        int mid = (l + r) / 2;

        for(int i = 0; i < 100; i++) B[i] = 0;
        B[x] = B[y] = mid;
        playRound(B, R);

        if(R[x] <= B[x] && R[y] <= B[y]) r = mid - 1;
        else if(R[x] > B[x] && R[y] > B[y]) l = mid + 1;
        else{
            return R[x] <= B[x];
        }

    }
    assert(0);
}

int greaterValue(int N, int W) {
    if(comp(0, 1)) return 1;
    else return 0;
}

struct Comp{
    bool operator()(int x, int y){
            for(int i = 0; i < N; i++) B[i] = 0;
            B[x] = B[y] = 100;
            playRound(B, R);
            return R[x] <= B[x];
        }
};

void allValues(int N, int W, int *P) {
    vector<int> ptr(N);
    multiset<int, Comp> seq;
    for(int i = 0; i < N; i++) ptr[i] = i;
    if (W == 2*N) {
        for(int i = 0; i < N; i++) seq.insert(i);
        ptr.clear();
        for(auto i : seq) ptr.push_back(i);
    } 
    else {
        sort(ptr.begin(), ptr.end(), comp);
    }
    for(int i = 0; i < N; i++){
        P[ptr[i]] = i + 1;
    }
}

Compilation message

koala.cpp: In member function 'bool Comp::operator()(int, int)':
koala.cpp:84:32: error: 'N' was not declared in this scope
             for(int i = 0; i < N; i++) B[i] = 0;
                                ^