Submission #346106

#TimeUsernameProblemLanguageResultExecution timeMemory
346106teehandsomeCounting Mushrooms (IOI20_mushrooms)C++14
25 / 100
129 ms384 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>

using namespace std;

int addA[4]={2,1,1,0};
int addB[4]={0,1,1,2};

int count_mushrooms(int n) {
    if(n<=5) {
        int ans=1; vector<int> temp; temp.push_back(0);
        for(int i=1;i<n;i++) {
            temp.push_back(i);
            if(!use_machine(temp)) ans++;
            temp.pop_back();
        }
        return ans;
    }
    int ans=1;
    vector<int> a={0,1};
    int t1=use_machine(a);
    a={0,2};
    int t2=use_machine(a);
    if(!t1) ans++;
    if(!t2) ans++;

    int s1,s2; bool isA;
    if(!t1) {
        s1=0,s2=1; isA=true;
    }
    else if(!t2) {
        s1=0,s2=2; isA=true;
    }
    else {
        s1=1,s2=2; isA=false;
    }
    int cur=3;
    if(n%2==0) {
        cur++;
        a={0,3};
        int t3=use_machine(a);
        if(!t3) ans++;
    }
    for(int i=cur;i<n;i+=2) {
        vector<int> temp;
        temp.push_back(s1); temp.push_back(i); temp.push_back(s2); temp.push_back(i+1);
        int res=use_machine(temp);
        if(isA) ans+=addA[res];
        else ans+=addB[res];
    }
    return ans;
}

#Verdict Execution timeMemoryGrader output
Fetching results...