# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
748220 | DJeniUp | 버섯 세기 (IOI20_mushrooms) | C++17 | 16 ms | 852 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "mushrooms.h"
#include "bits/stdc++.h"
using namespace std;
typedef int ll;
#define pb push_back
ll k;
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){
k++;
if(k>20000)exit(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){
k++;
if(k>20000)exit(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;
}
k=1;
ll g=use_machine(v);
if(g%2==0)return S(v,0,0);
else return S(v,0,1);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |