Submission #1206782

#TimeUsernameProblemLanguageResultExecution timeMemory
1206782HappyCapybaraLongest Trip (IOI23_longesttrip)C++17
70 / 100
32 ms448 KiB
#include "longesttrip.h" #include<bits/stdc++.h> using namespace std; vector<int> longest_trip(int N, int D){ vector<int> p; vector<bool> in(N, false); p.push_back(0); in[0] = true; bool rev = false; while (true){ if (p.size() == N) return p; vector<int> v; for (int i=0; i<N; i++){ if (!in[i]) v.push_back(i); } if (!are_connected({p.back()}, v)){ if (rev) break; rev = true; reverse(p.begin(), p.end()); } else { int l = 0, r = N; while (l < r-1){ int m = (l+r)/2; v.clear(); for (int i=l; i<m; i++){ if (!in[i]) v.push_back(i); } if (v.size() == 0 || !are_connected({p.back()}, v)) l = m; else r = m; } p.push_back(l); in[l] = true; } } if (p.size() == N) return p; for (int i=1; i<(int)p.size()-1; i++){ vector<int> v; for (int j=0; j<N; j++){ if (!in[j]) v.push_back(j); } if (!are_connected({p[i]}, v)) continue; for (int j=0; j<N; j++){ if (in[j]) continue; if (are_connected({p[i]}, {j})){ vector<int> np; for (int ci=i+1; ci<p.size(); ci++) np.push_back(p[ci]); for (int ci=0; ci<=i; ci++) np.push_back(p[ci]); np.push_back(j); in[j] = true; for (int ci=0; ci<N; ci++){ if (!in[ci]) np.push_back(ci); } return np; } } } if (p.size() > N/2) return p; vector<int> np; for (int i=0; i<N; i++){ if (!in[i]) np.push_back(i); } return np; }
#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...