Submission #1063974

#TimeUsernameProblemLanguageResultExecution timeMemory
1063974amirhoseinfar1385Longest Trip (IOI23_longesttrip)C++17
40 / 100
14 ms600 KiB
#include "longesttrip.h" #include<bits/stdc++.h> using namespace std; std::vector<int> longest_trip(int N, int D) { if(D==3){ vector<int>ret; for(int i=0;i<N;i++){ ret.push_back(i); } return ret; }else if(D==2){ deque<int>dq; int now=0; if(are_connected({0},{1})){ dq.push_back(0); dq.push_back(1); now=2; }else{ dq.push_back(0); dq.push_back(2); dq.push_back(1); now=3; } for(;now<N;now++){ if(are_connected({dq.front()},{now})){ dq.push_front(now); }else{ dq.push_back(now); } } vector<int>ret; for(auto x:dq){ ret.push_back(x); } return ret; } int n=N; vector<int>all; for(int i=0;i<n;i++){ all.push_back(i); } vector<vector<int>>ans(2); ans[0].push_back(all[0]); for(int i=1;i<n;i++){ int cn0=are_connected({ans[0].back()},{all[i]}); int cn1=0; if((int)ans[1].size()>0){ if(are_connected({ans[1].back()},{all[i]})){ cn1=1; } } if(cn1==1&&cn0==1){ ans[0].push_back(all[i]); while((int)ans[1].size()>0){ ans[0].push_back(ans[1].back()); ans[1].pop_back(); } }else if(cn0==1){ ans[0].push_back(all[i]); }else{ ans[1].push_back(all[i]); } } if((int)ans[0].size()<(int)ans[1].size()){ swap(ans[0],ans[1]); } return ans[0]; }
#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...