답안 #305506

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
305506 2020-09-23T11:54:21 Z sofapuden 코알라 (APIO17_koala) C++14
37 / 100
92 ms 512 KB
#include "koala.h"
#include <bits/stdc++.h>

using namespace std;

int arr1[100], arr2[100];
vector<int> ord;
set<int> used;
int n, w;

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.
    for(int i = 0; i < N; ++i){
		arr1[i] = 0;
	}
    arr1[0] = 1;
    playRound(arr1, arr2);
    for(int i = 0; i < N; ++i){
		if(arr2[i] <= arr1[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];
		
}

bool comp(int a, int b){
	for(int i = 0; i < n; ++i){
		arr1[i] = 0;
	}
	arr1[a] = arr1[b] = w/2;
	playRound(arr1,arr2);
	return arr2[a] < arr2[b];
}

void allValues(int N, int W, int *P) {
	n = N;w = W;
	if(N*2 == W){
		// TODO: Implement Subtask 4 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
		vector<int> x(N);
		iota(x.begin(),x.end(),0);
		sort(x.begin(),x.end(),comp);
		for(int i = 0; i < N; ++i){
			P[x[i]] = i+1;
		}
	}
	else {
        
	}
        // TODO: Implement Subtask 5 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
}
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 384 KB Output is correct
2 Correct 6 ms 384 KB Output is correct
3 Correct 6 ms 384 KB Output is correct
4 Correct 6 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 19 ms 384 KB Output is correct
2 Correct 21 ms 384 KB Output is correct
3 Correct 19 ms 384 KB Output is correct
4 Correct 19 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 91 ms 384 KB Output is correct
2 Correct 92 ms 384 KB Output is correct
3 Correct 88 ms 504 KB Output is correct
4 Correct 88 ms 384 KB Output is correct
5 Correct 88 ms 504 KB Output is correct
6 Correct 89 ms 384 KB Output is correct
7 Correct 90 ms 512 KB Output is correct
8 Correct 89 ms 384 KB Output is correct
9 Correct 87 ms 504 KB Output is correct
10 Correct 85 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 54 ms 512 KB Output is correct
2 Incorrect 59 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -