Submission #841254

#TimeUsernameProblemLanguageResultExecution timeMemory
841254I_love_Hoang_Yen가장 긴 여행 (IOI23_longesttrip)C++17
15 / 100
11 ms336 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; // Subtask 1: D == 3 vector<int> sub1(int n) { vector<int> res(n); std::iota(res.begin(), res.end(), 0); return res; } // Subtask 2: D == 2 vector<int> sub2(int n) { vector<int> res {0}; for (int i = 1; i < n; i++) { if (are_connected({0}, {i})) { res.push_back(i); break; } } for (int i = 1; i < n; i++) { if (i == res[1]) continue; if (are_connected({res.back()}, {i})) { res.push_back(i); } else { res.insert(res.begin(), i); } } return res; } // Subtask 3: D == 1, return path with length >= Lmax / 2 mt19937_64 rng(58); vector<int> sub3(int n) { vector<int> ids(n); std::iota(ids.begin(), ids.end(), 0); std::shuffle(ids.begin(), ids.end(), rng); vector<int> res {ids[0]}; for (int i = 1; i < n; i++) { if (are_connected({ids[0]}, {ids[i]})) { res.push_back(ids[i]); break; } } for (int i = 1; i < n; i++) { if (ids[i] == res[1]) continue; for (int turn = 0; turn < i - 1; ++turn) { if (are_connected({res.back()}, {ids[i]})) { res.push_back(ids[i]); break; } else if (are_connected({res[0]}, {ids[i]})) { res.insert(res.begin(), ids[i]); break; } else { int u = res.back(); res.pop_back(); res.insert(res.begin(), u); } } } return res; } vector<int> longest_trip(int n, int d) { if (d == 3) return sub1(n); if (d == 2) return sub2(n); return sub3(n); }
#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...