Submission #305302

#TimeUsernameProblemLanguageResultExecution timeMemory
305302sofapudenKoala Game (APIO17_koala)C++14
37 / 100
148 ms536 KiB
#include "koala.h"
#include <bits/stdc++.h>

using namespace std;

int arr1[100], arr2[100];

int minValue(int N, int W) {
    // TODO: Implement Subtask 1 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    memset(arr1,0,N);
    arr1[0] = 1;
    playRound(arr1, arr2);
    for(int i = 0; i < N; ++i){
		if(!arr2[i])return i;
	}
    return 0;
}

int maxValue(int N, int W) {
    // TODO: Implement Subtask 2 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    vector<int> go(N);
    iota(go.begin(),go.end(),0);
    int sz = go.size();
    while(sz != 1){
		for(int i = 0; i < N; ++i){
			arr1[i] = 0;
			arr2[i] = 0;
		}
		for(int i = 0; i < sz; ++i){
			arr1[go[i]] = W/sz;
		}
		playRound(arr1,arr2);
		go.clear();
		for(int i = 0; i < N; ++i){
			if(arr2[i] > arr1[i] && arr1[i] > 0)go.push_back(i);
		}
		sz = go.size();
	}
	return go[0];
}

int greaterValue(int N, int W) {
    // TODO: Implement Subtask 3 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    memset(arr1,0,N);
    arr1[0] = 4;
    arr1[1] = 4;
    playRound(arr1,arr2);
    if(arr2[0] <= 4 && arr2[1] <= 4){
		arr1[0] = 2;
		arr1[1] = 2;
		playRound(arr1,arr2);
		if(arr2[0] <= 2 && arr2[1] <= 2){
			arr1[0] = 1;
			arr1[1] = 1;
			playRound(arr1,arr2);
			return arr2[1] > arr2[0];
		}
		if(arr2[0] > 2 && arr2[1] > 2){
			arr1[0] = 3;
			arr1[1] = 3;
			playRound(arr1,arr2);
			return arr2[1] > arr2[0];
		}
		return arr2[1] > arr2[0];
		
	}	
    if(arr2[0] > 4 && arr2[1] > 4){
		arr1[0] = 8;
		arr1[1] = 8;
		playRound(arr1,arr2);
		if(arr2[0] <= 8 && arr2[1] <= 8){
			arr1[0] = 6;
			arr1[1] = 6;
			playRound(arr1,arr2);
			return arr2[1] > arr2[0];
		}
		return arr2[1] > arr2[0];
	}
		
	return arr2[1] > arr2[0];
		
}

void allValues(int N, int W, int *P) {
    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...