Submission #346150

#TimeUsernameProblemLanguageResultExecution timeMemory
346150lLab_Counting Mushrooms (IOI20_mushrooms)C++14
25 / 100
133 ms492 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> A = {0};

void recur(vector<int> &S){
    if(S.size()==2){
        int d = use_machine(S);
        if(d == 0){
            A.push_back(S[1]);
        }
    }else if(S.size()%2 == 0){
        int d = use_machine(S);
        if(d == 0){
            for(int i=1;i<S.size();i+=2){
                A.push_back(S[i]);
            }
            return ;
        }
        int nS = S.size();
        if(d > 0.6*nS) return;
        vector<int> S1,S2;
        int i=0;
        while(i<nS/2){
            S1.push_back(S[i]);
            i++;
        }
        while(i<nS){
            S2.push_back(S[i]);
            i++;
        }
        recur(S1);
        recur(S2);
    }
}

int count_mushrooms(int n) {
    int sum = 1;
    int i=1;
    while(i<n){
        vector<int> S;
        int p=1;
        int nA = A.size();
        int cnt = 0;
        for(int j=0;j<nA&&i<n;++j){
            S.push_back(A[j]);
            S.push_back(i);
            p = i;
            i++;
            cnt++;
        }
        int d = use_machine(S);
        sum += cnt-(d+1)/2;
        if(d == 0){
            for(int j=1;j<cnt*2;j+=2){
                A.push_back(S[j]);
            }
        }else if(d == 1){
            for(int j=1;j<cnt*2-1;j+=2){
                A.push_back(S[j]);
            }
        }
    }
    return sum;
}

Compilation message (stderr)

mushrooms.cpp: In function 'void recur(std::vector<int>&)':
mushrooms.cpp:16:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |             for(int i=1;i<S.size();i+=2){
      |                         ~^~~~~~~~~
mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:43:13: warning: variable 'p' set but not used [-Wunused-but-set-variable]
   43 |         int p=1;
      |             ^
#Verdict Execution timeMemoryGrader output
Fetching results...