Submission #247182

#TimeUsernameProblemLanguageResultExecution timeMemory
247182dantoh000Mouse (info1cup19_mouse)C++14
38 / 100
298 ms384 KiB
#include <bits/stdc++.h> #include "grader.h" int n; int Query(vector<int> q){ int k = query(q); if (k == n) exit(0);//return n; else return k; } void solve(int N){ n = N; vector<int> q(N); vector<int> ord(N); for (int i = 0; i < N; i++){ q[i] = i+1; ord[i] = i; } srand(time(NULL)); random_shuffle(ord.begin(),ord.end()); vector<int> done(N,0); for (int I = 0; I < N; I++){ int i = ord[I]; if (done[i]) continue; int cur = Query(q); vector<int> C; for (int J = I+1; J < N ;J++){ int j = ord[J]; swap(q[i],q[j]); int K = Query(q) - cur; if (K == 2){ done[i] = done[j] = 1; break; } else if (K == -2){ swap(q[i],q[j]); done[i] = done[j] = 1; break; } else if (K == 1){ C.push_back(j); } swap(q[i],q[j]); } if (C.size() == 2){ swap(q[i],q[C[0]]); swap(q[i],q[C[1]]); int K = Query(q) - cur; if (K == 3){ done[i] =done[C[0]] = done[C[1]] = 1; } else if (K == 2){ done[i] = done[C[0]] = 1; } else{ swap(q[i],q[C[1]]); swap(q[i],q[C[0]]); swap(q[i],q[C[1]]); swap(q[i],q[C[0]]); done[i] = done[C[1]] = 1; } } done[i] = 1; } for (int i = 0; i < N; i++) assert(done[i]); Query(q); return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...