Submission #1301901

#TimeUsernameProblemLanguageResultExecution timeMemory
1301901vako_pPark (JOI17_park)C++20
10 / 100
250 ms1316 KiB
#include "park.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define sd second const int mxN = 1500; ll n; random_device rd; mt19937_64 gen(rd()); ll query(ll x, ll y, vector<ll> v){ if(x > y) swap(x, y); // cout << x << ' ' << y << '\n'; // cout << " --> "; // for(auto it : v) cout << it << ' '; // cout << endl; int place[n]; for(int i = 0; i < n; i++) place[i] = 0; for(auto it : v) place[it] = 1; return Ask(x, y, place); } void ans(ll x, ll y){ if(x > y) swap(x, y); // cout << x << ' ' << y << endl; Answer(x, y); } void f(vector<ll> v){ // cout << " ------> "; // for(auto it : v) cout << it << ' '; // cout << endl; ll sz = v.size(); if(sz == 1) return; if(sz == 2){ ans(v[0], v[1]); return; } uniform_int_distribution<ll> dis(0, sz - 1); ll at = v[dis(gen)],sz1 = 0; vector<vector<ll>> v1; vector<ll> vv; for(auto it : v) if(it != at) vv.pb(it); for(auto it : v){ if(it == at) continue; if(query(at, it, {at, it})) ans(at, it); bool ok = true; for(int i = 0; i < sz1; i++) if(query(it, v1[i][0], vv)){ ok = false; v1[i].pb(it); break; } if(ok){ sz1++; v1.pb({it}); } } // cout << " --> " << sz1 << endl; for(int i = 0; i < sz1; i++){ f(v1[i]); } } void Detect(int T, int N) { n = N; vector<ll> v; for(int i = 0; i < n; i++) v.pb(i); f(v); return; }
#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...