Submission #1058138

#TimeUsernameProblemLanguageResultExecution timeMemory
1058138idasCounting Mushrooms (IOI20_mushrooms)C++17
0 / 100
0 ms432 KiB
#include "mushrooms.h" #include "bits/stdc++.h" #define FOR(i, begin, end) for(int i=(begin); i<(end); i++) #define sz(x) ((int)((x).size())) #define pb push_back using namespace std; typedef vector<int> vi; const int MxN=2e4, C=142; int n; vi a, b; int count_mushrooms(int N) { n=N; a.pb(0); if(use_machine({0,1})) b.pb(1); else a.pb(1); if(use_machine({0,2})) b.pb(2); else a.pb(2); int in=3; while(in<=n-2 && sz(a)<C && sz(b)<C) { if(sz(a)>=2) { int k=use_machine({a[0], in, a[1], in+1}); if(k==0) a.pb(in), a.pb(in+1); else if(k==1) a.pb(in), b.pb(in+1); else if(k==2) b.pb(in), a.pb(in+1); else b.pb(in), b.pb(in+1); in+=2; } else { int k=use_machine({b[0], in, b[1], in+1}); if(k==0) b.pb(in), b.pb(in+1); else if(k==1) b.pb(in), a.pb(in+1); else if(k==2) a.pb(in), b.pb(in+1); else a.pb(in), a.pb(in+1); in+=2; } } int ans=sz(a); if(sz(a)>=sz(b)) { vi tmp; FOR(i, 0, sz(a)) { tmp.pb(a[i]); if(in<n) tmp.pb(in++); } int k=use_machine(tmp); ans+=sz(a)-k/2-k&1; } else { vi tmp; FOR(i, 0, sz(b)) { tmp.pb(b[i]); if(in<n) tmp.pb(in++); } int k=use_machine(tmp); ans+=k/2+k&1; } return ans; } /* 3 0 1 0 10 0 1 1 0 0 0 1 1 1 1 */

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:51:23: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
   51 |         ans+=sz(a)-k/2-k&1;
      |                       ^
mushrooms.cpp:60:17: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses]
   60 |         ans+=k/2+k&1;
      |              ~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...