제출 #118999

#제출 시각아이디문제언어결과실행 시간메모리
118999Mahdi_Jfri코알라 (APIO17_koala)C++14
67 / 100
48 ms508 KiB
#include "koala.h"
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back

const int maxn = 1e2 + 20;

int b[maxn] , r[maxn] , ind[maxn];
bool can[maxn];

int minValue(int n, int w)
{
	memset(b , 0 , sizeof b);
	b[0] = 1;

	playRound(b , r);
	if(r[0] != 2)
		return 0;

	for(int i = 1; i < n - 1; i++)
		if(!r[i])
			return i;
}

int maxValue(int n, int w)
{
	for(int i = 0; i < n; i++)
		can[i] = 1;

	int rem = n;
	while(rem > 1)
	{
		for(int i = 0; i < n; i++)
		{
			if(can[i])
				b[i] = w / rem;
			else
				b[i] = 0;
		}
		playRound(b , r);

		for(int i = 0; i < n; i++)
			if(can[i] && r[i] <= b[i])
				can[i] = 0 , rem--;
	}

	for(int i = 0; i < n; i++)
		if(can[i])
			return i;
}

bool cmp(int p1 , int p2)
{
	int l = 1 , rx = 14;
	while(1)
	{
		memset(b , 0 , sizeof b);

		int m = (l + rx) / 2;
		b[p1] = b[p2] = m;
		playRound(b , r);

		if(b[p1] < r[p1] && b[p2] < r[p2])
		{
			l = m + 1;
			continue;
		}
		if(b[p1] < r[p1] && b[p2] >= r[p2])
			return 0;
		if(b[p1] >= r[p1] && b[p2] < r[p2])
			return 1;
		rx = m - 1;
	}
}

int greaterValue(int n, int w)
{
	return cmp(0 , 1);
}

int tmp[maxn];
void merge_sort(int l , int r)
{
	if(r - l < 2)
		return;

	int m = (l + r) / 2;
	merge_sort(l , m);
	merge_sort(m , r);

	int pt1 = l , pt2 = m , sz = 0;
	while(pt1 < m && pt2 < r)
	{
		if(cmp(ind[pt1] , ind[pt2]))
			tmp[sz++] = ind[pt1++];
		else
			tmp[sz++] = ind[pt2++];
	}

	while(pt1 < m)
		tmp[sz++] = ind[pt1++];
	while(pt2 < r)
		tmp[sz++] = ind[pt2++];

	for(int i = l; i < r; i++)
		ind[i] = tmp[i - l];
}

void allValues(int n, int w, int *p)
{
	if (w == 2*n)
	{
	}
	else
	{
		for(int i = 0; i < n; i++)
			ind[i] = i;
		merge_sort(0 , n);
		for(int i = 0; i < n; i++)
			p[ind[i]] = i + 1;
	}
}

컴파일 시 표준 에러 (stderr) 메시지

koala.cpp: In function 'int minValue(int, int)':
koala.cpp:26:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
koala.cpp: In function 'int maxValue(int, int)':
koala.cpp:53:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#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...