이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cave.h"
//#include "cave.h"
#include <bits/stdc++.h>
const int MAX = 5005;
int a[MAX], s[MAX], d[MAX], n, y;
void settin(int i)
{
for(int j = 0; j < i; j++)
{
a[d[j]] = s[d[j]];
}
}
void solve(int c, int i)
{
int S = 0, e = n - 1, mid = -1, u = -1;
for(int j = S; j <= e; j++)
{
a[j] = 1 - c;
}
// printf("%d %d\n", i, c);
while(S <= e)
{
//if(i == 0)
mid = (S + e) / 2;
// printf("%d %d %d %d\n", S, e, mid, y);
for(int j = S; j <= mid; j++)
{
a[j] = c;
}
settin(i);
y = tryCombination(a);
for(int j = S; j <= mid; j++)
{
a[j] = 1 - c;
}
//settin(i);
if(y <= i && y != -1)
{
//puts("HERE");
S = mid + 1;
// printf("%d %d\n", S, mid);
}
else
{
u = mid;
e = mid - 1;
}
}
d[i] = u;
s[u] = c;
}
void exploreCave(int N)
{
n = N;
for(int i = 0; i < N; i++)
{
memset(a, 0, sizeof(a));
settin(i);
y = tryCombination(a);
if(y <= i && y != -1)
{
solve(1, i);
}
else
{
solve(0, i);
}
}
for(int j = 0; j < N; j++) a[d[j]] = j;
answer(s, a);
}
# | 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... |