# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
704700 | NemanjaSo2005 | Counting Mushrooms (IOI20_mushrooms) | C++14 | 105 ms | 808 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "mushrooms.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll N,sta[20005];
bool inv;
vector<int> x,v,b1,b2,nep;
int count_mushrooms(int n){
N=n;/*
if(N<=10000){
sta[0]=1;
for(int i=0;i+1<N;i++){
x.clear();
x.push_back(i);
x.push_back(i+1);
sta[i+1]=sta[i]^use_machine(x);
}
ll res=0;
for(int i=0;i<N;i++)
res+=sta[i];
return res;
}*/
sta[0]=1;
for(int i=0;i+2<N;i+=2){
x.clear();
x.push_back(i);
x.push_back(i+1);
x.push_back(i+2);
int ans=use_machine(x);
if(ans==0){
sta[i+1]=sta[i];
sta[i+2]=sta[i];
}
if(ans==2){
sta[i+1]=sta[i]^1;
sta[i+2]=sta[i];
}
if(ans==1){
sta[i+1]=2;
sta[i+2]=sta[i]^1;
}
}
if(N%2==0){
x.clear();
x.push_back(N-1);
x.push_back(N-2);
sta[N-1]=sta[N-2]^use_machine(x);
}
for(int i=0;i<N;i++){
if(sta[i]==0)
b2.push_back(i);
if(sta[i]==1)
b1.push_back(i);
if(sta[i]==2)
nep.push_back(i);
}
if(b1.size()>b2.size()){
v=b1;
inv=1;
}
else{
inv=0;
v=b2;
}
x.clear();
x.push_back(v[v.size()-1]);
v.pop_back();
for(int i=0;i<nep.size();i++){
x.push_back(nep[i]);
x.push_back(v[v.size()-1]);
v.pop_back();
}
int res=0;
if(x.size()>1){
res=use_machine(x)/2;
if(inv)
res=nep.size()-res;
}
for(int i=0;i<N;i++)
if(sta[i]==1)
res++;
return res;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |