Submission #1347575

#TimeUsernameProblemLanguageResultExecution timeMemory
1347575hmms127Counting Mushrooms (IOI20_mushrooms)C++20
56.93 / 100
2 ms440 KiB
#include "mushrooms.h"
#include "bits/stdc++.h"
using namespace std;
int count_mushrooms(int n) {
    vector<int>a,b;
    int cnt=1;
    int cur=200;
    a.push_back(0);
    vector<int>sula;
    for (int i=1;i<min(n,3);i++){
        vector<int>v;
        v.push_back(0);
        v.push_back(i);
        if (use_machine(v)==0){
            a.push_back(i);
            cnt++;
        }
        else b.push_back(i);
    }
    if(a.size()>b.size()) sula=a;
    else sula=b;
    for (int i=3;i<min(200,n); i++){
        vector<int>v;
        v.push_back(sula[0]);
        v.push_back(i);
        int ans=use_machine(v);
        if (sula[0]==0){
            if (ans==0){a.push_back(i);cnt++;}
            else{b.push_back(i);}
        }
        else{
            if (ans==1){a.push_back(i);cnt++;}
            else{b.push_back(i);}
        }
    }
    vector<int> c;
    if (a.size()>b.size()){c=a;}
    else c=b;
    while (cur<n){
        vector<int>v;
        int prev=cur;
        for (int i=0;i<100&&cur<n;i++){
            v.push_back(cur);
            v.push_back(c[i]);
            cur++;
        }
        int ans=use_machine(v);
        if (c[0]==0){
            if (ans%2==0){cnt++;}
            cnt=cnt+(cur-prev-1)-ans/2;
        }
        else{
            if (ans%2==1)cnt++;
            cnt=cnt+ans/2;
        }
    }
    return cnt;
}
#Verdict Execution timeMemoryGrader output
Fetching results...