이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cave.h"
const int MAX_PORTE = 5000;
int etatValide[MAX_PORTE];
int porteRelie[MAX_PORTE];
int curEtat[MAX_PORTE];
void fixe(int bGauche, int bDroite, int val)
{
for(int i = bGauche; i <= bDroite; i++)
{
if(etatValide[i] == -1)
{
curEtat[i] = val;
}
else
{
curEtat[i] = etatValide[i];
}
}
}
void exploreCave(int N)
{
for(int i = 0; i < N; i++)
{
etatValide[i] = -1;
}
for(int i = 0; i < N; i++)
{
fixe(0, N - 1, 0);
int valide = 1;
int a = tryCombination(curEtat);
if(a > i || a == -1)
{
valide = 0;
}
else
{
fixe(0, N - 1, 1);
}
int deb = 0, fin = N - 1;
while(deb < fin - 1)
{
int mid = (deb + fin) / 2;
fixe(deb, mid, (valide + 1) % 2);
a = tryCombination(curEtat);
if(a > i || a == -1)
{
deb = mid + 1;
}
else
{
fin = mid;
}
fixe(deb, mid, valide);
}
fixe(deb, deb, (valide + 1) % 2);
a = tryCombination(curEtat);
if(a > i || a == -1)
{
porteRelie[fin] = i;
etatValide[fin] = valide;
}
else
{
porteRelie[deb] = i;
etatValide[deb] = valide;
}
fixe(deb, deb, valide);
}
answer(etatValide, porteRelie);
}
# | 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... |