#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=150;
A.push_back(0);
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);
}
}
vector <int> c;
if (A.size()>B.size()){c=A;}
else{c=B;}
for (int i=3; i<150 && i<n; i=i+2){
vector <int> test;
test.push_back(i);
test.push_back(c[0]);
if (i+1<150 && i+1<n){test.push_back(i+1);test.push_back(c[1]);}
int tmans=use_machine(test);
if (c[0]==0){
if (tmans==0){A.push_back(i);ans++;
if (i+1<150 && i+1<n){A.push_back(i+1);ans++;}
}
if (tmans==1){
B.push_back(i);
if (i+1<150 && i+1<n){A.push_back(i+1);ans++;}
}
if (tmans==2){
A.push_back(i);ans++;
if (i+1<150 && i+1<n){A.push_back(i+1);}
}
if (tmans==3){
B.push_back(i);
if (i+1<150 && i+1<n){B.push_back(i+1);}
}
}
else{
if (tmans==3){A.push_back(i);ans++;
if (i+1<150 && i+1<n){A.push_back(i+1);ans++;}
}
if (tmans==2){
B.push_back(i);
if (i+1<150 && i+1<n){A.push_back(i+1);ans++;}
}
if (tmans==1){
A.push_back(i);ans++;
if (i+1<150 && i+1<n){A.push_back(i+1);}
}
if (tmans==0){
B.push_back(i);
if (i+1<150 && i+1<n){B.push_back(i+1);}
}
}
}
if (A.size()>B.size()){c=A;}
else{c=B;}
while (cur<n){
vector <int> test;
int prv=cur;
for (int i=0; i<75 && 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... |