Submission #1243822

#TimeUsernameProblemLanguageResultExecution timeMemory
1243822simplemind_31Counting Mushrooms (IOI20_mushrooms)C++20
25 / 100
27 ms420 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> especie;
int con;
int count_mushrooms(int n){
	if(n==2){
		if(use_machine({0,1})){
			return 1;
		}else{
			return 2;
		}
	}
	vector<int> m;
	especie.assign(n,-1);
	especie[0]=0;
	if(use_machine({0,1})){
		especie[1]=1;
	}else{
		especie[1]=0;
	}
	if(use_machine({0,2})){
		especie[2]=1;
	}else{
		especie[2]=0;
	}
	if(especie[1]==0 || especie[2]==0){
		int desti;
		if(especie[1]==0){
			desti=1;
		}else{
			desti=2;
		}
		for(int i=3;i+1<n;i+=2){
			int x=use_machine({0,i,desti,i+1});
			if(x==0){
				especie[i]=especie[i+1]=0;
			}else if(x==1){
				especie[i]=0;
				especie[i+1]=1;
			}else if(x==2){
				especie[i+1]=0;
				especie[i]=1;
			}else{
				especie[i]=especie[i+1]=1;
			}
		}
		if(especie[n-1]==-1){
			if(use_machine({0,n-1})){
				especie[n-1]=1;
			}else{
				especie[n-1]=0;
			}
		}
	}else{
		for(int i=3;i+1<n;i+=2){
			int x=use_machine({1,i,2,i+1});
			if(x==0){
				especie[i]=especie[i+1]=1;
			}else if(x==1){
				especie[i]=1;
				especie[i+1]=0;
			}else if(x==2){
				especie[i+1]=1;
				especie[i]=0;
			}else{
				especie[i]=especie[i+1]=0;
			}
		}
		if(especie[n-1]==-1){
			if(use_machine({0,n-1})){
				especie[n-1]=1;
			}else{
				especie[n-1]=0;
			}
		}
	}
	for(int i=0;i<n;i++){
		if(especie[i]==0){
			con++;
		}
	}
	return con;
}
#Verdict Execution timeMemoryGrader output
Fetching results...