Submission #1301897

#TimeUsernameProblemLanguageResultExecution timeMemory
1301897hg-2008Library (JOI18_library)C++20
0 / 100
50 ms424 KiB
#include "library.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef long double ld; #define all(x) x.begin(), x.end() #define fast_io ios_base::sync_with_stdio(0); cin.tie(0) #define endl '\n' #define pb push_back #define out(x) {cout << x << '\n'; return;} #define ff first #define ss second #define sz(x) (int)(x).size() //Query(M) //Answer(res) void Solve(int n){ vector<int> b(n); vector<int> ans(n); for (int i = 1 ; i <= n ; i++){ for (int j = 1 ; j <= n ; j++) b[j-1] = (i != j); if (Query(b) == 1){ ans[0] = i; break; } } vector<int> rm; for (int i = 1 ; i <= n ; i++) if (i != ans[0]) rm.pb(i); if (n <= 200){ for (int i = 1 ; i < n ; i++){ for (int j = 0 ; j < n ; j++) b[j] = 0; b[ans[i-1]-1] = 1; for (auto x : rm){ b[x-1] = 1; if (Query(b) == 1){ ans[i] = x; break; } b[x-1] = 0; } b[ans[i-1]-1] = 0; vector<int> nrm = rm; rm.clear(); for (auto x : nrm) if (ans[i] != x) rm.pb(x); } Answer(ans); return; } for (int i = 1 ; i < n ; i++){ for (int j = 0 ; j < n ; j++) b[j] = 0; b[ans[i-1]-1] = 1; int l = -1, r = sz(rm)+1, mid; while (r-l > 1){ mid = (l+r)/2; for (int j = 0 ; j <= mid ; j++) b[rm[j]-1] = 1; int x = Query(b); b[ans[i-1]-1] = 0; int y = Query(b); if (x - y == 0) r = mid; else l = mid; for (int j = 0 ; j <= mid ; j++) b[rm[j]-1] = 0; b[ans[i-1]-1] = 1; } ans[i] = rm[r]; vector<int> nrm = rm; rm.clear(); for (auto x : nrm) if (ans[i] != x) rm.pb(x); } Answer(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...