| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1321614 | exoworldgd | 동굴 (IOI13_cave) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
#include"cave.h"
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
#define ll long long
using namespace std;
void fn(int s[],int ok[],int n,int l,int r,int v[]){for(int i=0;i<n;i++)l>i||i>r?v[i]=s[i]:ok[i]?v[i]=s[i]:v[i]=1-s[i];}
void exploreCave(int n){
int s[n],d[n],ok[n];
for(int i=0;i<n;i++)s[i]=ok[i]=0;
for(int i=0,p,f,l,r,k;i<n;i++){
p=tryCombination(s),f=p==i,l=0,r=n-1;
for(int m,v[n];l<r;)m=(l+r)>>1,v[n],fn(s,ok,n,l,m,v),k=tryCombination(v),f?(k^i?r=m:l=m+1):(k^i:l=m+1:r=m);
d[l]=i,f?s[l]=1-s[l]:0,ok[l]=1;
}
answer(s,d);
}
