#include "longesttrip.h"
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000009
#define INF 1000000019
#define POT (1<<20)
#define INFL 1000000000000000099
vector<ll> longest_trip(ll n,ll smiec){
vector<ll>v;
for(ll i=0;i<n;i++){
v.pb(i);
}
for(ll i=0;i<n;i++){
swap(v[i],v[n-1-rand()%(n-i)]);
}
stack<ll>st,st2;
st.push(v.back());
v.pop_back();
for(ll i : v){
if(st2.empty()){
if(are_connected({i},{st.top()})){
st.push(i);
}
else{
st2.push(i);
}
}
else{
if(!are_connected({i},{st.top()})){
st2.push(i);
}
else{
if(are_connected({i},{st2.top()})){
st.push(i);
while(st2.size()){
st.push(st2.top());
st2.pop();
}
}
else{
st.push(i);
}
}
}
}
vector<ll>v1,v2,V1,V2;
while(st.size()){
v1.pb(st.top());
st.pop();
}
while(st2.size()){
v2.pb(st2.top());
st2.pop();
}
V1=v1;
V2=v2;
if(v1.empty() || v2.empty() || !are_connected(v1,v2)){
if(v1.size()>v2.size())return v1;
return v2;
}
if(!are_connected({v1[0]},{v1.back()})){
if(!are_connected({v1.back()},{v2[0]}))reverse(v1.begin(),v1.end());
for(ll i : v2)v1.pb(i);
return v1;
}
swap(v1,v2);
if(!are_connected({v1[0]},{v1.back()})){
if(!are_connected({v1.back()},{v2[0]}))reverse(v1.begin(),v1.end());
for(ll i : v2)v1.pb(i);
return v1;
}
vector<ll>v3;
while(v1.size()>1){
while(v1.size()>v3.size()){
v3.pb(v1.back());
v1.pop_back();
}
if(!are_connected(v1,v2))swap(v1,v3);
v3.clear();
}
swap(v1,v2);
while(v1.size()>1){
while(v1.size()>v3.size()){
v3.pb(v1.back());
v1.pop_back();
}
if(!are_connected(v1,v2))swap(v1,v3);
v3.clear();
}
ll poz1;
for(poz1=0;poz1<V1.size();poz1++){
if(V1[poz1]==v1[0])break;
}
ll poz2;
for(poz2=0;poz2<V2.size();poz2++){
if(V2[poz2]==v2[0])break;
}
vector<ll>ans;
for(ll i=poz1+1;i<=poz1+V1.size();i++)ans.pb(V1[i%V1.size()]);
ans.pb(v1[0]);
ans.pb(v2[0]);
for(ll i=poz2+1;i<=poz2+V2.size();i++)ans.pb(V2[i%V2.size()]);
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |