Submission #53065

# Submission time Handle Problem Language Result Execution time Memory
53065 2018-06-28T00:33:44 Z arthur_nascimento Koala Game (APIO17_koala) C++14
Compilation error
0 ms 0 KB
#include "koala.h"

int minValue(int N, int W) {
    int v[N];
    v[0] = 1;
    for(int i=1;i<N;i++)
        v[i] = 0;
    int ans[N];
    playRound(v,ans);
    for(int i=0;i<N;i++)
        if(ans[i] == 0)
            return i;
    return 0;
}

int maxValue(int N, int W) {
    int v[N];
    int ans[N];
    int tot[N];
    for(int i=0;i<N;i++)
        v[i] = 1, tot[i] = 0;
    playRound(v,ans);
    for(int i=0;i<N;i++){
        tot[i] += (ans[i] > v[i]);
        v[i] = (ans[i]?2:0);
    }
    playRound(v,ans);
    int u = 0;
    for(int i=0;i<N;i++){
        tot[i] += (ans[i] > v[i]);
        if(tot[i] == 2) v[i] = 4, u++;
        else v[i] = 0;
    }

    playRound(v,ans);
    for(int i=0;i<N;i++){
        tot[i] += (ans[i] > v[i]);
        if(tot[i] == 3) v[i] = 11;
        else v[i] = 0;
    }
    playRound(v,ans);
    for(int i=0;i<N;i++)
        if(tot[i]+(ans[i]>v[i]) == 4)
            return i;
        
    return 0;
}

int greaterValue(int N, int W) {
    int lo[8] = {-0,-1,-2,2,-4,3,-6,6};
    int hi[8] = {-0,-1,-2,4,-4,7,-6,8};
    int cur = 5;
    int v[N];
    int ans[N];
    for(int i=0;i<3;i++){
       // printf("cur %d\n",cur);
        if(cur == 8){
            for(int j=0;j<N;j++)
                v[j] = (j <= 1) ? 10 : 0;
            playRound(v,ans);
            return (ans[1] > 10);
        }
        for(int j=0;j<N;j++)
            v[j] = (j <= 1) ? (cur-1) : 0;
        playRound(v,ans);
        ans[0] = (ans[0] > v[0]);
        ans[1] = (ans[1] > v[1]);
        if(ans[0] != ans[1])
            return ans[1] > ans[0];
        if(ans[0] == 0)
            cur = lo[cur];
        else
            cur = hi[cur];
    }
    return 0;
}

void allValues(int N, int W, int *P) {
    if (W == 2*N) {
        int u = 0;
        int v[N];
        int ans[N];
        int pos[N];
        for(int i=0;i<N;i++){
            int val = i+1;
            int lo = 0, hi = i;
            while(lo != hi){
                int mid = (lo+hi)/2;
                for(int j=0;j<N;j++)
                    v[j] = 0;
                v[i] = W/2;
                v[pos[mid]] = W/2;
                playRound(v,ans);u++;
                assert(u <= 700);
                if(ans[i] > W/2)
                    lo = mid+1;
                else
                    hi = mid;
            }
            if(lo == i){
                P[i] = i;
                pos[i] = i;
            }
            else {
                for(int j=i-1;j>=lo;j--){
                    pos[P[j]] = j+1;
                    P[j+1] = P[j];
                }
                P[lo] = i;
                pos[i] = lo;
            }
            //for(int j=0;j<=i;j++)
             //   printf("%d ",P[j]);
            //printf("\n");
        }
        for(int i=0;i<N;i++)
            P[i] = pos[i]+1;
    } else {
        // TODO: Implement Subtask 5 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
    }
}

Compilation message

koala.cpp: In function 'void allValues(int, int, int*)':
koala.cpp:94:17: error: 'assert' was not declared in this scope
                 assert(u <= 700);
                 ^~~~~~
koala.cpp:94:17: note: suggested alternative: 'short'
                 assert(u <= 700);
                 ^~~~~~
                 short
koala.cpp:85:17: warning: unused variable 'val' [-Wunused-variable]
             int val = i+1;
                 ^~~