Submission #347545

# Submission time Handle Problem Language Result Execution time Memory
347545 2021-01-13T07:59:53 Z nicholask Koala Game (APIO17_koala) C++14
37 / 100
81 ms 748 KB
#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
int minValue(int N, int W) {
    // TODO: Implement Subtask 1 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    int b[N]={},r[N]={};
    b[0]=1;
    playRound(b,r);
	if (r[0]<2) return 0;
	else {
		for (int i=1; i<N; i++){
			if (r[i]<1) return i;
		}
	}
    return 0;
}

int maxValue(int N, int W) {
    // TODO: Implement Subtask 2 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    vector <int> rem;
    for (int i=0; i<N; i++) rem.push_back(i);
    while (rem.size()>1){
    	int b[N]={},r[N]={};
    	for (auto&i:rem) b[i]=W/rem.size();
    	playRound(b,r);
    	vector <int> w;
    	for (int i=0; i<N; i++){
    		if (b[i]&&r[i]>b[i]) w.push_back(i);
		}
		rem=w;
	}
    return rem[0];
}

int greaterValue(int N, int W) {
    // TODO: Implement Subtask 3 solution here.
    // You may leave this function unmodified if you are not attempting this
    // subtask.
    int lb=1,rb=10;
    while (lb<rb){
    	int m=(lb+rb)>>1;
    	int b[N]={},r[N]={};
    	b[0]=b[1]=m;
    	playRound(b,r);
    	if (r[0]<=b[0]&&r[1]<=b[1]) rb=m-1;
    	else if (r[0]>b[0]&&r[1]>b[1]) lb=m+1;
    	else if (r[0]>b[0]) return 0;
    	else return 1;
	}
	int b[N]={},r[N]={};
	b[0]=b[1]=lb;
	playRound(b,r);
	if (r[0]>b[0]) return 0;
	else return 1;
}

bool cmp(int x,int y){
	x--;
	y--;
	int b[100]={},r[100]={};
	b[x]=b[y]=100;
	playRound(b,r);
	return (r[x]>b[x]);
}

vector <int> msort(vector <int> v){
	if (v.size()==1) return v;
	vector <int> f,s;
	if (v.size()%2==0){
		for (int i=0; i<v.size(); i++){
			if (i<v.size()/2) f.push_back(v[i]);
			else s.push_back(v[i]);
		}
	} else {
		for (int i=0; i<v.size(); i++){
			if (i<=v.size()/2) f.push_back(v[i]);
			else s.push_back(v[i]);
		}
	}
	f=msort(f);
	s=msort(s);
	vector <int> ans;
	int p1=0,p2=0;
	while (p1<f.size()&&p2<s.size()){
		if (cmp(f[p1],s[p2])){
			ans.push_back(f[p1]);
			p1++;
		} else {
			ans.push_back(s[p2]);
			p2++;
		}
	}
	for (int i=p1; i<f.size(); i++) ans.push_back(f[i]);
	for (int i=p2; i<s.size(); i++) ans.push_back(s[i]);
	return ans;
}
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.
        vector <int> v(N);
        for (int i=0; i<N; i++) v[i]=i;
        vector <int> ans=msort(v);
        for (int i=0; i<N; i++) P[ans[i]]=i+1;
    } else {
        // TODO: Implement Subtask 5 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
	}
}

Compilation message

koala.cpp: In function 'std::vector<int> msort(std::vector<int>)':
koala.cpp:74:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |   for (int i=0; i<v.size(); i++){
      |                 ~^~~~~~~~~
koala.cpp:75:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |    if (i<v.size()/2) f.push_back(v[i]);
      |        ~^~~~~~~~~~~
koala.cpp:79:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |   for (int i=0; i<v.size(); i++){
      |                 ~^~~~~~~~~
koala.cpp:80:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |    if (i<=v.size()/2) f.push_back(v[i]);
      |        ~^~~~~~~~~~~~
koala.cpp:88:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   88 |  while (p1<f.size()&&p2<s.size()){
      |         ~~^~~~~~~~~
koala.cpp:88:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   88 |  while (p1<f.size()&&p2<s.size()){
      |                      ~~^~~~~~~~~
koala.cpp:97:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   97 |  for (int i=p1; i<f.size(); i++) ans.push_back(f[i]);
      |                 ~^~~~~~~~~
koala.cpp:98:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   98 |  for (int i=p2; i<s.size(); i++) ans.push_back(s[i]);
      |                 ~^~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 6 ms 364 KB Output is correct
2 Correct 6 ms 364 KB Output is correct
3 Correct 6 ms 364 KB Output is correct
4 Correct 6 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 18 ms 364 KB Output is correct
2 Correct 18 ms 364 KB Output is correct
3 Correct 18 ms 492 KB Output is correct
4 Correct 18 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 74 ms 364 KB Output is correct
2 Correct 81 ms 504 KB Output is correct
3 Correct 74 ms 492 KB Output is correct
4 Correct 72 ms 364 KB Output is correct
5 Correct 73 ms 748 KB Output is correct
6 Correct 72 ms 364 KB Output is correct
7 Correct 71 ms 364 KB Output is correct
8 Correct 75 ms 364 KB Output is correct
9 Correct 71 ms 364 KB Output is correct
10 Correct 73 ms 620 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 26 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -