제출 #1014370

#제출 시각아이디문제언어결과실행 시간메모리
1014370JakobZorz가장 긴 여행 (IOI23_longesttrip)C++17
70 / 100
21 ms1132 KiB
#include"longesttrip.h" #include<iostream> #include<algorithm> using namespace std; int n; pair<int,int>find_conn(vector<int>v1,vector<int>v2){ for(int i:v1){ if(are_connected({i},v2)){ for(int j:v2){ if(are_connected({i},{j})) return{i,j}; } } } // impossible exit(1); } vector<int>merge(vector<int>v1,vector<int>v2){ while(v2.size()){ v1.push_back(v2.back()); v2.pop_back(); } return v1; } pair<vector<int>,vector<int>>merge(vector<int>v1,vector<int>v2,vector<int>v3){ if(are_connected({v1.back()},{v2.back()})) return{merge(v1,v2),v3}; if(are_connected({v2.back()},{v3.back()})) return{merge(v2,v3),v1}; return{merge(v1,v3),v2}; } vector<int>cyclic_shift(vector<int>arr,int a){ // it ends with a vector<int>res; bool b1=false; for(int i:arr){ if(b1) res.push_back(i); if(i==a) b1=true; } bool b2=true; for(int i:arr){ if(b2) res.push_back(i); if(i==a) b2=false; } return res; } vector<int>longest_trip(int N,int D){ n=N; vector<vector<int>>arr; for(int i=0;i<n;i++) arr.push_back({i}); while(arr.size()>2){ vector<int>v1,v2,v3; v1=arr.back(); arr.pop_back(); v2=arr.back(); arr.pop_back(); v3=arr.back(); arr.pop_back(); auto res=merge(v1,v2,v3); arr.push_back(res.first); arr.push_back(res.second); } vector<int>res1=arr[0]; vector<int>res2=arr[1]; if(!are_connected(res1,res2)){ if(res1.size()>res2.size()) return res1; else return res2; } if(are_connected({res1.back()},{res2.back()})) return merge(res1,res2); reverse(res1.begin(),res1.end()); if(are_connected({res1.back()},{res2.back()})) return merge(res1,res2); reverse(res2.begin(),res2.end()); if(are_connected({res1.back()},{res2.back()})) return merge(res1,res2); reverse(res1.begin(),res1.end()); if(are_connected({res1.back()},{res2.back()})) return merge(res1,res2); // both must be cyclical then auto pr=find_conn(res1,res2); vector<int>r1=cyclic_shift(res1,pr.first); vector<int>r2=cyclic_shift(res2,pr.second); return merge(r1,r2); }
#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...