# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
748217 | DJeniUp | 버섯 세기 (IOI20_mushrooms) | C++17 | 17 ms | 748 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"
using namespace std;
typedef int ll;
#define pb push_back
ll S(vector<ll>v,ll x,ll y){
if(v.size()==2)return x^1+y^1;
vector<ll>a(0),b(0);
for(int i=0;i<v.size();i++){
if(i%2==0 && i!=v.size()-1){
a.pb(v[i]);
}else{
b.pb(v[i]);
}
}
//cout<<a.size()<<" "<<b.size()<<endl;
ll r1=0;
ll res1=0;
if(a.size()>1){
r1=use_machine(a);
res1=(r1/2+1)+(r1+1)/2;
if(res1==a.size()){
if(x==0)res1=(r1/2+1);
else res1=(r1+1)/2;
}else if(r1==0){
if(x==0)res1=a.size();
else res1=0;
}else{
if(r1%2==0){
res1=S(a,x,x);
}else res1=S(a,x,x^1);
}
}else res1=x^1;
ll r2=0;
ll res2=0;
if(b.size()>1){
r2=use_machine(b);
res2=(r2/2+1)+(r2+1)/2;
if(res2==b.size()){
if(y==0)res2=(r2/2+1);
else res2=(r2+1)/2;
}else if(r2==0){
if(y==0)res2=b.size();
else res2=0;
}else{
if(r2%2==0){
res2=S(b,y,y);
}else res2=S(b,y^1,y);
}
}else res2=y^1;
return res1+res2;
}
int count_mushrooms(int n) {
vector<ll>v(n);
for(int i=0;i<n;i++){
v[i]=i;
}
ll g=use_machine(v);
if(g%2==0)return S(v,0,0);
else return S(v,0,1);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |