# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
844782 | midi | 동굴 (IOI13_cave) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define vc vector
typedef vc<ll> vcll;
#define pr pair
typedef pr<ll, ll> prll;
#define f0r(i,a,n) for (i=a; i<n; i++)
#define f1r(i,a,n) for (i=a; i<=n; i++)
#define r0f(i,n,a) for (i=n; i>a; i--)
#define r1f(i,n,a) for (i=n; i>=a; i--)
#define pb push_back
#define mp make_pair
#define INF (LLONG_MAX>>4ll)
#define mxN 5010ll
ll n;
int bar[mxN];
int gar[mxN];
int perm[mxN];
void exploreCave(int N)
{
n=N;
ll i2;
f0r(i2,0,n)
{
bar[i]=0;
perm[i]=-1;
gar[i]-1;
}
f0r(i2,0,n)
{
ll i = tryCombination(bar);
ll j;
ll l=0, r=n-1; // both incl.
while (l<r)
{
ll m;
if (l+1==r) m=l;
else m = (l+r)/2;
ll i3;
f1r(i3, l, m) if (gar[i3]!=-1) bar[i3]!=bar[i3];
j = tryCombination(bar);
if (j<i)
{
i=j;
r=m;
}
else if (j==i)
{
l=m+1;
}
else
{
f1r(i3, l, m) if (gar[i3]!=-1) bar[i3]!=bar[i3];
l=m+1;
}
}
gar[l]=bar[l];
perm[l]=i;
}
// f0r(i,0,n) printf("gar[%lli]: %lli, perm[%lli]: %lli\n", i, gar[i], i, perm[i]);
answer(gar, perm);
}