Submission #436257

#TimeUsernameProblemLanguageResultExecution timeMemory
436257BelguteiCounting Mushrooms (IOI20_mushrooms)C++17
68.69 / 100
12 ms300 KiB
#include "mushrooms.h"
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define ff first
#define ss second
#define pb push_back
#define mk make_pair

int c;
vector<int> v,v1;
vector<int> tur;

int count_mushrooms(int n) {
	if(n<=200){
		c=1;
		for(int i=1; i<n; i++){
			tur.clear();
			tur.pb(0);
			tur.pb(i);
			c+=1-use_machine(tur);
		}
		return c;
	}
	//
	v.pb(0);
	tur.clear();
	tur.pb(0);
	tur.pb(1);
	c=use_machine(tur);
	if(c==0) v.pb(1);
	else v1.pb(1);
	//
	if(v.size()==1){
		tur.clear();
		tur.pb(0);
		tur.pb(2);
		c=use_machine(tur);
		if(c==0) v.pb(2);
		else v1.pb(2);
	}
	//
	if(v.size()==2){
		for(int i=v.size()+v1.size()+1; i<160; i+=2){
			tur.clear();
			tur.pb(v[0]);
			tur.pb(i-1);
			tur.pb(v[1]);
			tur.pb(i);
			c=use_machine(tur);
			if(c==0){
				v.pb(i);
				v.pb(i-1);
			}
			if(c==1){
				v.pb(i-1);
				v1.pb(i);
			}
			if(c==2){
				v.pb(i);
				v1.pb(i-1);
			}
			if(c==3){
				v1.pb(i-1);
				v1.pb(i);
			}
		}
	}
	else{
		for(int i=v.size()+v1.size()+1; i<160; i+=2){
			tur.clear();
			tur.pb(v1[0]);
			tur.pb(i-1);
			tur.pb(v1[1]);
			tur.pb(i);
			c=use_machine(tur);
			if(c==0){
				v1.pb(i);
				v1.pb(i-1);
			}
			if(c==1){
				v1.pb(i-1);
				v.pb(i);
			}
			if(c==2){
				v1.pb(i);
				v.pb(i-1);
			}
			if(c==3){
				v.pb(i-1);
				v.pb(i);
			}
		}
	}
	int ans=v.size();
	if(v.size()>v1.size()){
		int i=v.size()+v1.size();
		while(i<n){
			tur.clear();
			int pos=0;
			while(pos<v.size() && i<n){
				tur.pb(v[pos]);
				tur.pb(i);
				i++;
				pos++;
			}
			int val=use_machine(tur);
			ans+=pos-(val+1)/2;
		}
	}
	else{
		int i=v.size()+v1.size();
		while(i<n){
			tur.clear();
			int pos=0;
			while(pos<v1.size() && i<n){
				tur.pb(v1[pos]);
				tur.pb(i);
				i++;
				pos++;
			}
			int val=use_machine(tur);
			ans+=(val+1)/2;
		}
	}
	return ans;
	//int c2 = use_machine(m);
}

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:103:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  103 |    while(pos<v.size() && i<n){
      |          ~~~^~~~~~~~~
mushrooms.cpp:118:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  118 |    while(pos<v1.size() && i<n){
      |          ~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...