Submission #1159259

#TimeUsernameProblemLanguageResultExecution timeMemory
1159259OI_AccountPark (JOI17_park)C++20
20 / 100
216 ms588 KiB
#include "park.h" #include <bits/stdc++.h> using namespace std; const int N = 1400; static int Place[1400]; int n; bitset<N + 1> mark; bool query(int u, int v) { if (u > v) swap(u, v); for (int i = 0; i < n; i++) Place[i] = mark[i]; return Ask(u, v, Place); } void write(int u, int v) { if (u > v) swap(u, v); Answer(u, v); } void solveSub1() { for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) { mark.reset(); mark[i] = mark[j] = 1; if (query(i, j)) write(i, j); } } int cmpU, cmpV; bool cmp(int u, int v) { mark.set(); mark[v] = 0; return query(cmpU, u); } void solveSub2() { vector<int> vec; for (int i = 1; i < n - 1; i++) vec.push_back(i); cmpU = 0; cmpV = n - 1; sort(vec.begin(), vec.end(), cmp); if (vec.size()) { write(0, vec[0]); write(vec.back(), n - 1); } for (int i = 0; i + 1 < vec.size(); i++) write(vec[i], vec[i + 1]); } void Detect(int T, int N) { n = N; if (T == 1) solveSub1(); else if (T == 2) solveSub2(); }
#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...