Submission #306874

#TimeUsernameProblemLanguageResultExecution timeMemory
306874ivan24Counting Mushrooms (IOI20_mushrooms)C++14
0 / 100
3 ms640 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; using ll = int; typedef vector<ll> vi; typedef vector<vi> vvi; typedef pair<ll,ll> ii; typedef vector<ii> vii; typedef vector<vii> vvii; #define F first #define S second class Solver{ private: ll n; vi isChecked, type, ctr; vvi byType; void add_type(ll x, bool t){ if (type[x] != -1) return; type[x] = t; byType[t].push_back(x); ctr[t]++; } void addOne(ll x){ ll res = use_machine(vi{0,x}); add_type(x,res); } bool addTwo(ll x, ll y){ bool t = 0; if (byType[t].size() < 2){ t = 1; } ll res = use_machine(vi{x,byType[t][0],y,byType[t][1]}); add_type(x,(res&1) ? !t : t); add_type(y,(res&2) ? !t : t); } public: Solver(ll n): n(n), isChecked(n,0), type(n,-1), ctr(2,0), byType(2){ type[0] = 0; ctr[0]++; byType[0].push_back(0); } int solve(){ addOne(1); if (n > 2) addOne(2); for (ll i = 2; n > 2*i; i++){ addTwo(2*i-1,2*i); } if (n%2 == 0){ addOne(n-1); } return ctr[0]; } }; int count_mushrooms(int n) { Solver mySolver(n); return mySolver.solve(); }

Compilation message (stderr)

mushrooms.cpp: In member function 'bool Solver::addTwo(ll, ll)':
mushrooms.cpp:40:5: warning: no return statement in function returning non-void [-Wreturn-type]
   40 |     }
      |     ^
#Verdict Execution timeMemoryGrader output
Fetching results...