# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
964523 | 2024-04-17T05:08:06 Z | UmairAhmadMirza | Cave (IOI13_cave) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> #include <cave.h> using namespace std; int const NN=5e3+3; int swit[NN]; bool com[NN]; int door[NN]; int n; int tryCombination(int S[]); void answer(intS [],int D[]); void exploreCave(int N){ n=N; int S[N],K[N]; for (int i = 0; i < n; ++i){ S[i]=0; K[i]=0; } for (int i = 0; i < n; ++i) { //find comb int cl=tryCombination(S); if(cl==i) com[i]=1; int low=0,high=n; while(high-low>1){ int mid=(low+high)/2; for (int j = 0; j < n; ++j){ if(swit[j]>0) continue; if(low<=j&&j<mid) K[j]=com[i]; else K[j]=!(com[i]); } int v=tryCombination(K); if(v==i) low=mid; else high=mid; } swit[low]=i+1; door[i]=low; S[low]=com[i]; K[low]=com[i]; // break; } for (int i = 0; i < N; ++i) swit[i]--; answer(S,swit); }