| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1296178 | eri16 | 버섯 세기 (IOI20_mushrooms) | C++20 | 0 ms | 0 KiB |
int count_mushrooms(int n){
vector <int> A;
vector <int> B;
int ans=1;
int cur=150;
A.push_back(0);
for (int i=1; i<3 && i<n; i++){
vector <int> test;
test.push_back(0);
test.push_back(i);
if (use_machine(test)==0){
A.push_back(i);
ans++;
}
else{
B.push_back(i);
}
}
vector <int> c;
if (A.size()>B.size()){c=A;}
else{c=B;}
for (int i=3; i<n; i=i+2){
vector <int> test;
test.push_back(i);
test.push_back(c[0]);
if (i+1<n){test.push_back(i+1);test.push_back(c[1]);}
int tmans=use_machine(test);
if (c[0]==0){
if (tmans==0){A.push_back(i);ans++;
if (i+1<n){A.push_back(i+1);ans++;}
}
if (tmans==1){
B.push_back(i);
if (i+1<n){A.push_back(i+1);ans++;}
}
if (tmans==2){
A.push_back(i);ans++;
if (i+1<n){A.push_back(i+1);}
}
if (tmans==3){
B.push_back(i);
if (i+1<n){B.push_back(i+1);}
}
}
else{
if (tmans==3){A.push_back(i);ans++;
if (i+1<n){A.push_back(i+1);ans++;}
}
if (tmans==2){
B.push_back(i);
if (i+1<n){A.push_back(i+1);ans++;}
}
if (tmans==1){
A.push_back(i);ans++;
if (i+1<n){A.push_back(i+1);}
}
if (tmans==0){
B.push_back(i);
if (i+1<n){B.push_back(i+1);}
}
}
}
return ans;
}
