# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
693322 | NemanjaSo2005 | Counting Mushrooms (IOI20_mushrooms) | C++14 | 104 ms | 864 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |