Submission #73306

#TimeUsernameProblemLanguageResultExecution timeMemory
73306FedericoSKoala Game (APIO17_koala)C++14
60 / 100
104 ms1200 KiB
#include <assert.h>
#include <iostream>
#include <algorithm>
#include "koala.h"
using namespace std;

int minValue(int N, int W) {
    
	int B[N],R[N];
	fill(B,B+N,0);

	B[0]=1;

	playRound(B,R);

	int res=0;

	for(int i=0;i<N;i++)
		if(R[i]==0)
			res=i;

    return res;
}

int maxValue(int N, int W) {

	int B[N],R[N];
	int V[N];
	fill(V,V+N,1);
	fill(B,B+N,0);
	fill(R,R+N,0);

	int res=N;

	while(true){
		
		int k=(int)(N/res);
		for(int i=0;i<N;i++)
			B[i]=V[i]*k;

		//for(int i=0;i<N;i++)cout<<B[i]<<" ";cout<<endl;
		playRound(B,R);

		res=0;
		for(int i=0;i<N;i++){
			if(V[i] and !R[i])
				V[i]=false;
			if(V[i] and R[i])
				res++;
		}

		if(res==1)
			for(int i=0;i<N;i++)
				if(V[i] and R[i])
					return i;

		assert(res);

	}

}

int greaterValue(int N, int W) {

    int B[N],R[N];
	fill(B,B+N,0);
	fill(R,R+N,0);

	int l=0,r=10,m;

	while(l<r){
		
		m=(l+r)/2;

		B[0]=B[1]=m;
		playRound(B,R);

		if(R[0]!=R[1])
    		return R[0]<R[1];

    	if(R[0]==0)
    		r=m;
    	else
    		l=m+1;

	}
	
}

int N;

bool comp(int a, int b){

	int B[N],R[N];
	fill(B,B+N,0);
	fill(R,R+N,0);

	int l=0,r=min(N,10),m;

	while(l<r){
		
		m=(l+r)/2;

		B[a]=B[b]=m;
		playRound(B,R);

		if(R[a]!=R[b])
    		return R[a]<R[b];

    	if(R[a]==0)
    		r=m;
    	else
    		l=m+1;

	}
}

void allValues(int N_, int W, int *P) {

	N=N_;
	int A[N];
	for(int i=0;i<N;i++)
		A[i]=i;

	sort(A,A+N,comp);

	for(int i=0;i<N;i++)
		P[A[i]]=i+1;

}
	

Compilation message (stderr)

koala.cpp: In function 'int greaterValue(int, int)':
koala.cpp:88:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
koala.cpp: In function 'bool comp(int, int)':
koala.cpp:116: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...