답안 #118998

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
118998 2019-06-20T07:11:42 Z Mahdi_Jfri 코알라 (APIO17_koala) C++14
37 / 100
48 ms 436 KB
#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 f;
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;
		if(f)
			for(int i = 0; i < 100; i++)
				b[i]++;
		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++];
}

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;
	}
}

Compilation message

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]
 }
 ^
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 384 KB Output is correct
2 Correct 14 ms 384 KB Output is correct
3 Correct 14 ms 384 KB Output is correct
4 Correct 13 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 416 KB Output is correct
2 Correct 48 ms 384 KB Output is correct
3 Correct 46 ms 436 KB Output is correct
4 Correct 43 ms 384 KB Output is correct
5 Correct 43 ms 384 KB Output is correct
6 Correct 44 ms 384 KB Output is correct
7 Correct 43 ms 384 KB Output is correct
8 Correct 44 ms 384 KB Output is correct
9 Correct 43 ms 384 KB Output is correct
10 Correct 43 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 12 ms 384 KB Output is partially correct
2 Incorrect 15 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -