Submission #621179

#TimeUsernameProblemLanguageResultExecution timeMemory
621179KLPPCounting Mushrooms (IOI20_mushrooms)C++14
75.84 / 100
12 ms324 KiB
#include "mushrooms.h" #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<b;i++) #define trav(a,v) for(auto a:v) typedef long long int lld; int K; int answer[1000]; int count_mushrooms(int n) { if(n<220){ int ans=1; rep(i,1,n){ vector<int> V; V.push_back(0); V.push_back(i); int u=use_machine(V); ans+=1-u; } return ans; } K=min(200,n-1); vector<int> zeros; vector<int> ones; answer[0]=0; zeros.push_back(0); rep(i,1,3){ vector<int> V; V.push_back(0); V.push_back(i); int u=use_machine(V); answer[i]=u; if(u==1)ones.push_back(i); else zeros.push_back(i); } int x,y; if(zeros.size()>1)x=zeros[0],y=zeros[1]; else x=ones[0],y=ones[1]; rep(i,3,K+1){ vector<int> V; V.push_back(x); V.push_back(i); V.push_back(y); V.push_back(i+1); int u=use_machine(V); answer[i]=u/2; if(answer[x])answer[i]^=1; answer[i+1]=u%2; if(answer[x])answer[i+1]^=1; if(answer[i]==1)ones.push_back(i); else zeros.push_back(i); if(answer[i+1]==1)ones.push_back(i+1); else zeros.push_back(i+1); i++; } int revert=false; if(zeros.size()<ones.size()){ swap(zeros,ones); revert=true; } /*trav(a,ones)cout<<a<<" "; cout<<endl; trav(a,zeros)cout<<a<<" "; cout<<endl;*/ vector<int> analyse; int cnt=0; int ans=0; rep(i,0,K+1)ans+=(answer[i]==0); rep(i,K+1,n){ analyse.push_back(i); analyse.push_back(zeros[cnt]); //cout<<zeros[cnt]<<endl; cnt++; if(i==n-1 || cnt==zeros.size()){ //cout<<cnt<<" "<<zeros.size()<<endl; int u=use_machine(analyse); if(u%2==1)u++; if(revert){ ans+=u/2; }else{ ans+=analyse.size()/2-u/2; } analyse.clear(); cnt=0; } } return ans; }

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:74:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |   if(i==n-1 || cnt==zeros.size()){
      |                ~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...