제출 #805294

#제출 시각아이디문제언어결과실행 시간메모리
805294ma_moutahid동굴 (IOI13_cave)C++17
0 / 100
119 ms648 KiB
#include <bits/stdc++.h> #include "cave.h" using ll =long long; ll LINF=1000000000000000000; int INF=1000000000; #define pi pair<int,int> #define pl pair<ll,ll> #define endl '\n' #define vi vector<int> #define vii vector<vector<int>> #define vl vector<ll> #define vll vector<vector<ll>> //#define int ll using namespace std; vi correct; int n; void sett(int *v,int l,int r,int pos,int* location){ for(int i=0;i<l;i++){ v[i]=!pos; if(location[i]!=-1)v[i]=correct[i]; } for(int i=r+1;i<n;i++)v[i]=!pos; for(int i=l;i<=r;i++)v[i]=pos; } void exploreCave(int N) { correct.resize(N,-1); n=N; int combination[N]; for(int i=0;i<N;i++)combination[i]=0; int cave=0; int location[N];for(int i=0;i<n;i++)location[i]=-1; int t; t=tryCombination(combination); for(int i=0;i<t;i++)correct[i]=0; correct[t]=1; while (1){ int l=0,r=N-1; while(l!=r){ int m=(l+r)/2; sett(combination,m+1,r,correct[cave],location); t=tryCombination(combination); if(t==-1){ answer(combination,location); return; } if(t>cave)l=m+1; else r=m; } location[cave]=l; for(int i=cave;i<t;i++)correct[i]=combination[i]; correct[t]=!combination[t]; cave++; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...