# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
441866 | FSYo | 버섯 세기 (IOI20_mushrooms) | C++14 | 1 ms | 200 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "mushrooms.h"
#include <bits/stdc++.h>
#ifdef FSYo
#include "stub.cpp"
#endif
#define cs const
#define pb push_back
using namespace std;
typedef vector<int> vi;
int count_mushrooms(int n) {
// srand(time(NULL));
vi zero, one, re;
for(int i = 1; i < n; i++) re.pb(i);
zero.pb(0);
random_shuffle(re.begin(), re.end());
int cnt = 0; // include x in one
while(re.size()) {
if(zero.size() >= one.size()) {
vi q;
for(int i = 0; i < zero.size(); i++) {
if(re.empty()) break;
q.pb(re.back()), re.pop_back();
q.pb(zero[i]);
}
int t = use_machine(q);
if(t & 1) one.pb(q[0]);
else zero.pb(q[0]);
cnt += (t + 1) / 2;
}
else {
vi q;
for(int i = 0; i < one.size(); i++) {
if(re.empty()) break;
q.pb(re.back()), re.pop_back();
q.pb(one[i]);
}
int t = use_machine(q);
if(t & 1) zero.pb(q[0]);
else one.pb(q[0]);
cnt += (q.size() - t) / 2;
}
// cout << cnt << endl;
// for(int x : zero) cout << x << ' ';cout <<endl;
// for(int x : one) cout << x << ' ';cout <<endl;
// for(int x : re) cout << x << ' ';cout <<endl;
}
return cnt;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |