제출 #1233274

#제출 시각아이디문제언어결과실행 시간메모리
1233274Sir_Ahmed_Imran가장 긴 여행 (IOI23_longesttrip)C++17
40 / 100
5 ms416 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; #define nl '\n' #define ff first #define ss second #define ll long long #define ld long double #define terminator main #define pll pair<ll,ll> #define append push_back #define pii pair<int,int> #define all(x) (x).begin(),(x).end() int n; vector<int> solve3(){ vector<int> v; for(int i = 0; i < n; i++) v.append(i); return v; } vector<int> solve2(){ deque<int> Q; Q.append(0); if(are_connected({0}, {1})){ Q.append(1); if(are_connected({1}, {2})) Q.append(2); else Q.push_front(2); } else Q.append(2), Q.append(1); for(int i = 3; i < n; i++){ if(are_connected({Q.back()}, {i})) Q.append(i); else Q.push_front(i); } vector<int> ans; while(!Q.empty()){ ans.append(Q.front()); Q.pop_front(); } return ans; } vector<int> solve1(){ deque<int> d, q; d.append(0); vector<int> ans; for(int i = 1; i < n; i++){ if(are_connected({d.back()}, {i})){ d.append(i); if(!q.empty() && are_connected({i}, {q.back()})){ while(!q.empty()){ d.append(q.back()); q.pop_back(); } } } else q.append(i); } if(d.size() < q.size()) swap(d, q); while(!d.empty()){ ans.append(d.front()); d.pop_front(); } return ans; } vector<int> longest_trip(int N, int D){ n = N; if(D == 3) return solve3(); if(D == 2) return solve2(); return solve1(); }
#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...