Submission #108656

#TimeUsernameProblemLanguageResultExecution timeMemory
108656someone_aaLibrary (JOI18_library)C++17
0 / 100
557 ms868 KiB
#include <cstdio> #include <vector> #include "library.h" #include <bits/stdc++.h> #define ll long long #define pb push_back using namespace std; const int maxn = 1500; vector<int>adj[maxn]; vector<int>M; int n; int preQuery(vector<int>M) { int br = 0; for(int i:M) { if(i == 1) br++; } if(br == 0) return 0; else return Query(M); } int find_neighbour(int x, int l=1, int r=n) { if(l > r) return -1; if(l == r) { // check if X is connected to L or not M[l-1] = M[x-1] = 1; int curr = preQuery(M); M[l-1] = M[x-1] = 0; if(curr == 1) return l; else return -1; } int mid = (l + r) /2; for(int i=l-1;i<=mid-1;i++) { M[i] = 1; } for(int i:adj[x]) { M[i-1] = 0; } M[x-1] = 0; int Without = preQuery(M); M[x-1] = 1; int With = preQuery(M); M[x-1] = 0; for(int i=l-1;i<=mid-1;i++) { M[i] = 0; } if(With <= Without) { return find_neighbour(x, l, mid); } else { return find_neighbour(x, mid+1, r); } } void Solve(int N) { n = N; for(int i=0;i<N;i++) { M.pb(0); } if(N == 1) { vector<int>v; v.pb(1); Answer(v); return; } int st = 1; bool check = false; int br = 0; for(int i=0;i<N;i++) { int X; if(st == 1) { if(br == 0) { X = find_neighbour(st); br++; } else if(br == 1) { X = find_neighbour(st); br++; } else { break; } } else { X = find_neighbour(st); } if(X == -1) { // st is on corner if(st == 1) { break; } else { st = 1; } } else { adj[st].pb(X); adj[X].pb(st); st = X; } } if(adj[1].size() == 1) return; /*for(int i=1;i<=n;i++) { cout<<i<<": \n"; for(int j:adj[i]) { cout<<j<<" "; } cout<<"\n"; }*/ st = 1; bool found = false; for(int i=1;i<=N;i++) { if(adj[i].size() == 1) { st = i; found = true; break; } } if(!found) { return; } vector<int>v; v.pb(st); st = adj[st][0]; for(int i=0;i<N-1;i++) { if(adj[st][0] == v.back()) { v.pb(st); st = adj[st][1]; } else { v.pb(st); st = adj[st][0]; } } Answer(v); }

Compilation message (stderr)

library.cpp: In function 'void Solve(int)':
library.cpp:80:10: warning: unused variable 'check' [-Wunused-variable]
     bool check = false;
          ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...