제출 #849167

#제출 시각아이디문제언어결과실행 시간메모리
849167abcvuitunggio동굴 (IOI13_cave)C++17
100 / 100
206 ms1104 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; int S[5000],D[5000],ch[5000]; vector <int> v; bool check(int i){ int val=tryCombination(S); return (val>i||val==-1); } void exploreCave(int N){ for (int i=0;i<N;i++){ v.clear(); for (int j=0;j<N;j++) if (!ch[j]){ v.push_back(j); S[j]=0; } if (check(i)){ int l=1,r=N-i,kq=-1,pos=0; while (l<=r){ int mid=(l+r)>>1; if (mid<pos) for (int i=mid;i<pos;i++) S[v[i]]=0; else for (int i=pos;i<mid;i++) S[v[i]]=1; pos=mid; if (!check(i)){ kq=v[mid-1]; r=mid-1; } else l=mid+1; } S[kq]=0; ch[kq]=1; D[kq]=i; } else{ int l=1,r=N-i,kq=-1,pos=0; while (l<=r){ int mid=(l+r)>>1; if (mid<pos) for (int i=mid;i<pos;i++) S[v[i]]=0; else for (int i=pos;i<mid;i++) S[v[i]]=1; pos=mid; if (check(i)){ kq=v[mid-1]; r=mid-1; } else l=mid+1; } S[kq]=ch[kq]=1; D[kq]=i; } } answer(S,D); }
#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...