#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;
int count_mushrooms(int n){
vector <int> A;
vector <int> B;
int ans=1;
int cur=300;
A.push_back(0);
vector <int> cl;
for (int i=1; i<3 && i<n; i++){
vector <int> test;
test.push_back(0);
test.push_back(i);
if (use_machine(test)==0){
A.push_back(i);
ans++;
}
else{
B.push_back(i);
}
}
if (A.size()>B.size()){cl=A;}
else{cl=B;}
for (int i=3; i<300 && i<n; i=i+2){
vector <int> test;
test.push_back(cl[0]);
test.push_back(i);
int kk=0;
if (i+1<300 && i+1<n){kk=1;
test.push_back(cl[1]);
test.push_back(i+1);}
int tmans=use_machine(test);
if (kk==0){
if (cl[0]==0){
if (tmans==0){A.push_back(i);ans++;}
else{B.push_back(i);}
}
else{
if (tmans==1){A.push_back(i);ans++;}
else{B.push_back(i);}
}}
else{
if (cl[0]==0){
if (tmans==0){A.push_back(i);A.push_back(i+1);ans=ans+2;}
else if (tmans==1){A.push_back(i);B.push_back(i+1);ans=ans+1;}
else if (tmans==2){B.push_back(i);A.push_back(i+1);ans=ans+1;}
else {B.push_back(i);B.push_back(i+1);}
}
else{
if (tmans==3){A.push_back(i);A.push_back(i+1);ans=ans+2;}
else if (tmans==2){A.push_back(i);B.push_back(i+1);ans=ans+1;}
else if (tmans==1){B.push_back(i);A.push_back(i+1);ans=ans+1;}
else {B.push_back(i);B.push_back(i+1);}
}
}
}
vector <int> c;
if (A.size()>B.size()){c=A;}
else{c=B;}
while (cur<n){
vector <int> test;
int prv=cur;
for (int i=0; i<300 && cur<n; i++){
test.push_back(cur);
test.push_back(c[i]);
cur++;
}
int tmans=use_machine(test);
if (c[0]==0){
if (tmans%2==0){ans++;}
ans=ans+(cur-prv-1)-tmans/2;
}
else{
if (tmans%2==1){ans++;}
ans=ans+tmans/2;
}
}
return ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |