이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;
typedef long long ll;
const ll MAXN = 5000;
int door[MAXN];
int pos[MAXN];
ll n;
void flip_pos(ll to)
{
for(int i = 0; i <= to; i++)
{
if(door[i] == -1)
pos[i] ^= 1;
}
}
void init_switches()
{
for(int i = 0; i < n; i++)
{
door[i] = -1;
pos[i] = 0;
}
}
bool check(ll k, ll i)
{
flip_pos(k);
ll cur = tryCombination(pos);
flip_pos(k);
return cur == i;
}
void exploreCave(int N)
{
n = N;
init_switches();
for(int i = 0; i < n; i++)
{
ll cur = tryCombination(pos);
if(cur == i)
flip_pos(n - 1);
ll left = 0;
ll right = n - 1;
ll ans = -1;
ll mid;
while(left <= right)
{
mid = (left + right) / 2;
if(check(mid, i))
{
right = mid - 1;
ans = mid;
}
else
left = mid + 1;
}
door[ans] = i;
}
answer(pos, door);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |