Submission #604538

#TimeUsernameProblemLanguageResultExecution timeMemory
604538rrrr10000Counting Mushrooms (IOI20_mushrooms)C++14
0 / 100
2 ms308 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> vi; typedef vector<vi> vvi; typedef pair<ll,ll> P; typedef vector<P> vp; typedef vector<vp> vvp; typedef vector<bool> vb; #define rep(i,n) for(ll i=0;i<(ll)(n);i++) #define REP(i,k,n) for(ll i=(ll)(k);i<(ll)(n);i++) #define all(a) a.begin(),a.end() #define fi first #define se second #define pb emplace_back template<class T> void out(T a){cout<<a<<endl;} #include "mushrooms.h" int count_mushrooms(int n){ int ans=1; if(n<=226){ vector<int> ask(2); REP(i,1,n){ ask[1]=i; int res=use_machine(ask); if(res==0)ans++; } return ans; } int B=200; vi va,vb;va.pb(0); REP(i,1,B){ vector<int> ask(2); ask[1]=i; int res=use_machine(ask); if(res==0)va.pb(i); else vb.pb(i); } int f=0; if(va.size()<vb.size()){ swap(va,vb);f=1; } for(ll i=B;i<n;i+=va.size()-1){ vi al; REP(j,i,i+va.size()-1)if(j<n)al.pb(j); vector<int> ask(al.size()*2+1); rep(j,al.size())ask[j*2+1]=al[j]; rep(j,al.size()+1)ask[j*2]=va[j]; int res=use_machine(ask); if(f==1)ans+=res/2; else ans+=al.size()-res/2; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...