Submission #428522

#TimeUsernameProblemLanguageResultExecution timeMemory
428522errorgornPark (JOI17_park)C++17
10 / 100
1238 ms1104 KiB
#include "park.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define ii pair<ll,ll> #define fi first #define se second #define endl '\n' #define puf push_front #define pof pop_front #define pub push_back #define pob pop_back #define lb lower_bound #define ub upper_bound #define rep(x,s,e) for (auto x=s-(s>e);x!=e-(s>e);s<e?x++:x--) #define all(x) (x).begin(),(x).end() #define sz(x) (int) (x).size() mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int t,n; int Ask(int i,int j,vector<int> v){ //cout<<"Ask: "<<i<<" "<<j<<" | "; for (auto &it:v) cout<<it<<" "; cout<<endl; if (i>j) swap(i,j); //the fuck? int arr[n]; memset(arr,0,sizeof(arr)); for (auto &it:v) arr[it]=1; return Ask(i,j,arr); } void ans(int i,int j){ if (i>j) swap(i,j); Answer(i,j); } void rec(vector<int> v){ //cout<<"debug: "; for (auto &it:v) cout<<it<<" "; cout<<endl; if (sz(v)==1) return; int pivot=v.back(); v.pob(); while (sz(v)){ vector<int> split; vector<int> rest; split.pub(v.back()); for (auto &it:v){ if (it==split[0]) continue; if (Ask(split[0],it,v)==1) split.pub(it); else rest.pub(it); } //now we need to find how split is connected to pivot vector<int> cset={pivot}; for (auto &it:split){ cset.pub(it); if (Ask(it,pivot,cset)){ ans(it,pivot); break; } } rec(split); v=rest; } } void Detect(int T, int N) { t=T,n=N; if (t==1){ rep(x,0,n) rep(y,x+1,n){ if (Ask(x,y,{x,y})==1) Answer(x,y); } } else{ vector<int> proc; rep(x,0,n) proc.pub(x); rec(proc); } }
#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...