제출 #111445

#제출 시각아이디문제언어결과실행 시간메모리
111445nxteruKoala Game (APIO17_koala)C++14
47 / 100
86 ms512 KiB
#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double D;
typedef pair<ll,ll> P;
typedef pair<ll,P> T;
#define M 1000000007
#define F first
#define S second
#define PB push_back
#define INF 1000000001
int n,b[105],r[105];
void ini(void){
	for(int i=0;i<n;i++)b[i]=0;
}
int minValue(int N, int w) {
	n=N;
    ini();
    b[0]=1;
    playRound(b,r);
    for(int i=0;i<n;i++)if(b[i]>=r[i])return i;
}

int maxValue(int N,int w) {
	n=N;
    vector<int>res;
    for(int i=0;i<n;i++)res.PB(i);
    while(res.size()>1){
		ini();
		for(int i=0;i<res.size();i++)b[res[i]]=w/res.size();
		playRound(b,r);
		res.clear();
		for(int i=0;i<n;i++)if(b[i]>0&&b[i]<r[i])res.PB(i);
	}
    return res[0];
}

int greaterValue(int N, int w) {
	n=N;
	ini();
	b[0]=4,b[1]=4;
	playRound(b,r);
	if(b[0]<r[0]){
		if(b[1]>=r[1])return 0;
		b[0]=7,b[1]=7;
		playRound(b,r);
		if(b[0]<r[0]&&b[1]<r[1]){
			b[0]=8,b[1]=8;
			playRound(b,r);
		}
		if(b[0]<r[0])return 0;
		else return 1;
	}else if(b[1]<r[1])return 1;
	else{
		b[0]=2,b[1]=2;
		playRound(b,r);
		if(b[0]>=r[0]&&b[1]>=r[1]){
			b[0]=1,b[1]=1;
			playRound(b,r);
		}
		if(b[0]<r[0])return 0;
		else return 1;
	}
}
bool grt(int x,int y){
	ini();
	b[x]=100,b[y]=100;
	playRound(b,r);
	return b[x]>=r[x];
}
vector<int> mrg(vector<int>x,vector<int>y){
	vector<int>res;
	int a=0,b=0;
	while(a<x.size()&&b<y.size()){
		if(grt(x[a],y[b]))res.PB(x[a++]);
		else res.PB(y[b++]);
	}
	while(a<x.size())res.PB(x[a++]);
	while(b<y.size())res.PB(y[b++]);
	return res;
}
void allValues(int N, int w, int *p) {
	n=N;
    if(w==2*n){
		vector<vector<int>>res;
		for(int i=0;i<n;i++)res.PB(vector<int>{i});
		while(res.size()>1){
			vector<vector<int>>nw;
			for(int i=0;i+1<res.size();i+=2){
				nw.PB(mrg(res[i],res[i+1]));
			}
			if(res.size()%2==1)nw.PB(res.back());
			res.clear();
			res.insert(res.begin(),nw.begin(),nw.end());
		}
		for(int i=0;i<n;i++)p[res[0][i]]=i+1;
    }else{
        // TODO: Implement Subtask 5 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
    }
}

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

koala.cpp: In function 'int maxValue(int, int)':
koala.cpp:31:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<res.size();i++)b[res[i]]=w/res.size();
               ~^~~~~~~~~~~
koala.cpp: In function 'std::vector<int> mrg(std::vector<int>, std::vector<int>)':
koala.cpp:75:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while(a<x.size()&&b<y.size()){
        ~^~~~~~~~~
koala.cpp:75:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while(a<x.size()&&b<y.size()){
                    ~^~~~~~~~~
koala.cpp:79:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while(a<x.size())res.PB(x[a++]);
        ~^~~~~~~~~
koala.cpp:80:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while(b<y.size())res.PB(y[b++]);
        ~^~~~~~~~~
koala.cpp: In function 'void allValues(int, int, int*)':
koala.cpp:90:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i=0;i+1<res.size();i+=2){
                ~~~^~~~~~~~~~~
koala.cpp: In function 'int minValue(int, int)':
koala.cpp:23: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...