# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1217725 | mkkkkkkkk | Cave (IOI13_cave) | C++20 | 103 ms | 528 KiB |
#include <bits/stdc++.h>
#include "cave.h"
void exploreCave(int N) {
int d[N]={},s[N]={};
memset(s,-1,sizeof(s));
memset(d,-1,sizeof(d));
for(int i=0;i<N;i++)
{
int ss[N]={};
for(int j=0;j<N;j++)
{
if(s[i]!=-1)
ss[i]=s[i];
}
int br=tryCombination(ss);
if(br==-1)
br=N;
if(br>i)
{
int l=0,r=N-1;
int m=(l+r)/2;
for(;l<=r;m=(l+r)/2)
{
memset(ss,0,sizeof(ss));
for(int j=0;j<=m;j++)
{
if(s[i]!=-1)
ss[i]=s[i];
else
ss[i]=1;
}
int brr=tryCombination(ss);
if(brr==-1)
brr=N;
if(brr>i)
{
l=m+1;
}
else
{
r=m-1;
}
}
d[i]=l;
s[l]=0;
}
else
{
int l=0,r=N-1;
int m=(l+r)/2;
for(;l<=r;m=(l+r)/2)
{
memset(ss,0,sizeof(ss));
for(int j=0;j<=m;j++)
{
if(s[i]!=-1)
ss[i]=s[i];
else
ss[i]=1;
}
int brr=tryCombination(ss);
if(brr==-1)
brr=N;
if(brr>i)
{
r=m-1;
}
else
{
l=m+1;
}
}
d[i]=l;
s[l]=1;
}
}
int s1[N]={};
for(int i=0;i<N;i++)
s1[d[i]]=i;
answer(s,s1);
}
# | 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... |