제출 #841220

#제출 시각아이디문제언어결과실행 시간메모리
841220I_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; if (are_connected({res.back()}, {ids[i]})) { res.push_back(ids[i]); } else if (are_connected({res[0]}, {ids[i]})) { res.insert(res.begin(), ids[i]); } 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...