Submission #116690

#TimeUsernameProblemLanguageResultExecution timeMemory
116690claudyLibrary (JOI18_library)C++14
0 / 100
535 ms644 KiB
# pragma GCC optimize("Ofast") # pragma GCC optimization ("unroll-loops") # include "bits/stdc++.h" std::pair<int,int> DR[] = {{-1,0},{0,1},{1,0},{0,-1},{-1,1},{-1,-1},{1,1},{1,-1}}; # define ll long long # define clock (clock() * 1000.0 / CLOCKS_PER_SEC) # define rc(s) return cout << s,0 # define rcg(s) cout << s;exit(0) # define _ ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); # define db(x) cerr << #x << " = " << x << '\n' # define pb push_back # define mp make_pair # define all(s) s.begin(),s.end() # define sz(x) (int)((x).size()) # include "library.h" //# define int ll using namespace std; // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # define LOCAL # define sim template < class c # define ris return * this # define dor > debug & operator << # define eni(x) sim > typename \ enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) { sim > struct rge { c b, e; }; sim > rge<c> range(c i, c j) { return rge<c>{i, j}; } sim > auto dud(c* x) -> decltype(cerr << *x, 0); sim > char dud(...); struct debug { #ifdef LOCAL ~debug() { cerr << endl; } eni(!=) cerr << boolalpha << i; ris; } eni(==) ris << range(begin(i), end(i)); } sim, class b dor(pair < b, c > d) { ris << "(" << d.first << ", " << d.second << ")"; } sim dor(rge<c> d) { *this << "["; for (auto it = d.b; it != d.e; ++it) *this << ", " + 2 * (it == d.b) << *it; ris << "]"; } #else sim dor(const c&) { ris; } #endif }; #define show(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] " int gcd(int a, int b) { if(b) return gcd(b,a%b); return a; }mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ int Query(const std::vector<int>& M); void Answer(const std::vector<int>& res); set<int>s; vector<int>M; int n; vector<int>vec; int k = 0; void solve(int x,int par) { if(x == -1) return; s.erase(x); vec.pb(x); int l = 0; int r = sz(s) - 1; while(l < r) { int mid = l + r >> 1; for(int i = 0;i < n;i++) { M[i] = 0; } M[par - 1] = 1; auto it = s.begin(); for(int i = 0;i <= mid;i++) { M[*it - 1] = 1; it++; } int a = Query(M); M[x - 1] = 1; int b = Query(M); if(a != b) r = mid; else l = mid + 1; } if(l > r) { solve(-1,x); return ; } auto it = s.begin(); for(int i = 0;i <= l;i++) { if(i == l) solve(*it,x); it++; } } void Solve(int N) { n = N; M.resize(n); M[0] = 1; vector<int>adj; for(int i = 2;i <= n;i++) { M[i - 1] = 1; if(Query(M) == 1) adj.pb(i); M[i - 1] = 0; } for(int i = 2;i <= n;i++) { s.insert(i); } vec.pb(1); solve(adj[0],1); vector<int>ans; for(auto it : vec) ans.pb(it); vec.clear(); if(sz(adj) > 1) { solve(adj[1],1); reverse(vec.begin(),vec.end()); for(auto it : ans) vec.pb(it); } else Answer(ans); }

Compilation message (stderr)

library.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 # pragma GCC optimization ("unroll-loops")
 
library.cpp: In function 'void solve(int, int)':
library.cpp:74:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   int mid = l + r >> 1;
             ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...