Submission #1234731

#TimeUsernameProblemLanguageResultExecution timeMemory
1234731siewjhPark (JOI17_park)C++20
0 / 100
1 ms580 KiB
#include "park.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 1400; int Place[MAXN]; void Detect(int T, int N) { vector<int> st, oust, intr; for (int i = 1; i < N; i++) oust.push_back(i); intr.push_back(0); for (int i = 1; i < N; i++){ if (st.empty()){ st.push_back(oust.back()); oust.pop_back(); } memset(Place, 0, sizeof(Place)); for (int x : intr) Place[x] = 1; while(1){ int curr = st.back(); Place[curr] = 1; if (Ask(0, curr, Place)) break; int lo = 0, hi = oust.size() - 1, res; while (lo <= hi){ int m = (lo + hi) >> 1; for (int i = 0; i <= m; i++) Place[oust[i]] = 1; if (Ask(0, curr, Place)){ res = m; hi = m - 1; } else lo = m + 1; for (int i = 0; i <= m; i++) Place[oust[i]] = 0; } st.push_back(oust[res]); oust.erase(oust.begin() + res); } int curr = st.back(); st.pop_back(); for (int x : intr) Place[x] = 0; int lo = 0, hi = intr.size() - 1, res; while (lo <= hi){ int m = (lo + hi) >> 1; for (int i = 0; i <= m; i++) Place[intr[i]] = 1; if (Ask(0, curr, Place)){ res = m; hi = m - 1; } else lo = m + 1; for (int i = 0; i <= m; i++) Place[intr[i]] = 0; } Answer(intr[res], curr); intr.push_back(curr); } }
#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...