Submission #408875

#TimeUsernameProblemLanguageResultExecution timeMemory
408875AmineTrabelsiCounting Mushrooms (IOI20_mushrooms)C++14
0 / 100
1 ms200 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;
const int K = 100;
/*
int small(int n){
    vector<int> m;
    int ans = 1;
    for (int i = 1; i < n; i++)
        ans += (use_machine({0,i}) == 0);
    return ans;
}
*/
int count_mushrooms(int n) {
    /*
    if(n <= 200){
        return small(n);
    }*/
    bool type; // 0 if A 1 if B
    vector<int> known;
    int ind = 1;
    int ans = 1;
    // part one
    type = 0;
    known.push_back(0);
    // part two
    vector<int> m;
    assert(known.size() > 0);
    int i = 0;
    while(ind < n){
        if(i < (int)known.size()){
            m.push_back(known[i]);
            m.push_back(ind);
            ind++;
            i++;
        }
        if(i == (int)known.size() || ind == n){
            /*
            for(auto x:m)cerr<<x<<" ";
                cerr<<'\n';*/
            int cnt = use_machine(m);
            if(type){
                ans += (cnt/2) + (cnt&1);
            }else{
                ans += ((int)m.size()/2) - (cnt/2) + (cnt&1);
            }
            if(!(cnt&1)){
                known.push_back(m.back());
            }
            m.clear();
            i = 0;
        }
    }
    return ans;
}
/*
21
0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

AAAA 0
AAAB 1
ABAA 2
ABAB 3

*/
#Verdict Execution timeMemoryGrader output
Fetching results...