답안 #103888

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
103888 2019-04-03T05:26:53 Z autumn_eel 코알라 (APIO17_koala) C++14
19 / 100
22 ms 384 KB
#include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;

#include "koala.h"

int B[200],R[200];
int minValue(int N, int W) {
	memset(B,0,sizeof(B));
	B[0]=1;
	playRound(B,R);
	rep(i,N){
		if(B[i]>=R[i])return i;
	}
	return -1;
}

int maxValue(int N, int W) {
	rep(i,N){
		B[i]=1;
	}
	playRound(B,R);
	vector<int>v;
	rep(i,N){
		if(R[i]>1){
			v.push_back(i);
		}
	}
	while(v.size()>1){
		memset(B,0,sizeof(B));
		int ave=W/v.size();
		for(int i:v)B[i]=ave;
		playRound(B,R);
		vector<int>u;
		for(int i:v){
			if(R[i]>B[i])u.push_back(i);
		}
		v=u;
	}
	return v[0];
}

int greaterValue(int N, int W) {
	int l=1,r=min(W/2,7);
	while(1){
		int t=(l+r)/2;
		memset(B,0,sizeof(B));
		B[0]=B[1]=t;
		playRound(B,R);
		bool f0=(B[0]<R[0]),f1=(B[1]<R[1]);
		if(f0^f1){
			if(f0)return 0;
			return 1;
		}
		if(!f0)r=t-1;
		else l=t+1;
	}
}

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 {
		//~ int id=minValue()
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 7 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 9 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 384 KB Output is correct
2 Correct 22 ms 384 KB Output is correct
3 Correct 22 ms 384 KB Output is correct
4 Correct 19 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -