Submission #1078129

#TimeUsernameProblemLanguageResultExecution timeMemory
1078129idasLongest Trip (IOI23_longesttrip)C++17
40 / 100
362 ms1956 KiB
#include "bits/stdc++.h" #include "longesttrip.h" #define FOR(i, begin, end) for(int i=(begin); i<(end); i++) #define sz(x) ((int)(x).size()) #define pb push_back using namespace std; typedef pair<int, int> pii; typedef vector<int> vi; int n, d; map<pii, bool> mp; bool con(int a, int b) { if(mp.count({a,b})) return mp[{a,b}]; return mp[{a,b}]=are_connected({a},{b}); } mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); std::vector<int> longest_trip(int N, int D) { mp.clear(); n=N; d=D; if(d==3) { vi ans; FOR(i, 0, n) ans.pb(i); return ans; } if(d==2) { vi ins; FOR(i, 0, n) ins.pb(i); shuffle(ins.begin(), ins.end(), rng); vi ans; int st=0; while(sz(ans)<n) { ans.clear(); vector v(n, false); ans.pb(ins[st]); v[ins[st]]=true; FOR(z, 0, n-1) { FOR(j, 0, n) { int i=ins[j]; if(v[i]) continue; if(con(ans.back(), i)) { ans.pb(i); v[i]=true; break; } } } st++; } return ans; } vi ins; FOR(i, 0, n) ins.pb(i); shuffle(ins.begin(), ins.end(), rng); vi ans; int st=0; while(sz(ans)<(n+1)/2) { ans.clear(); vector v(n, false); ans.pb(ins[st]); v[ins[st]]=true; FOR(z, 0, n-1) { FOR(j, 0, n) { int i=ins[j]; if(v[i]) continue; if(con(ans.back(), i)) { ans.pb(i); v[i]=true; break; } } } st++; } return ans; }
#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...