답안 #733458

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
733458 2023-04-30T19:13:55 Z 1ne 코알라 (APIO17_koala) C++14
4 / 100
4 ms 208 KB
#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
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.
    int posB[N],posR[N];
    for (int i = 0;i<N - 1;++i){
    	posB[i] = 0;
    }
    posB[N - 1] = 1;
    playRound(posB,posR);
    if (posR[N - 1] == 2){
    	for (int j = 0;j<N;++j){
    		if (posR[j] == 0){
    			return j;
    		}
    	}
    }
    else{
    	for (int i = 0;i<N;++i){
    		posB[i] = 0;
    	}
    	posB[0] = 1;
    	playRound(posB,posR);
    	if (posR[0] == 2){
    		for (int j = 0;j<N;++j){
    			if (posR[j] == 0)return j;
    		}
    	}
    	return 0;
    }
    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.
    int posB[N],posR[N];
    for (int i = 0;i<N;++i){
    	posB[i] = 1;	
    }
    //51 ... 100
    playRound(posB,posR);
    for (int i = 0;i<N;++i){
    	if (posR[i] == 2){
    		posB[i] = 2;
    	}
    	else{
    		posB[i] = 0;
    	}
    }
    //76...100 + 26....50
    int nxposR[N];
    playRound(posB,nxposR);
    //lets put 2 stones each at top50 positions
    //x stones will be got; uncontested
    //x + 3 * y <= 100
    //x = 25 is optimal so 76...100 will be picked
    //75 - 25
    //75 / 3 = 25
    //now we know all quarter values
    //x + 5 * y <= 100
    //100,75...20
    for (int i = 0;i<N;++i){
    	if (posR[i] == 2 && nxposR[i] == 3){
    		posB[i] = 4;
    	}
    	else{
    		posB[i] = 0;
    	}
    }
    int fposR[N];
    //75..21 + 100 + 99 + 98 + 97 + 96 + 95 + 94 + 93 + 92
    playRound(posB,fposR);
    int f2posR[N];
    for (int i = 0;i<N;++i){
    	if (posR[i] == 2 && nxposR[i] == 4 && fposR[i] == 5){
    		posB[i] = 11;
    	}
    	else{
    		posB[i] = 0;
    	}
    }
    playRound(posB,f2posR);
    for (int i = 0;i<N;++i){
    	if (f2posR[i] == 12){
    		return i;
    	}
    }
    //100 92..11                                
    return 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.
    return 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.
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 208 KB Output is correct
2 Correct 4 ms 208 KB Output is correct
3 Correct 4 ms 208 KB Output is correct
4 Correct 4 ms 208 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -