#include "longesttrip.h"
#include <vector>
#include <deque>
using namespace std;
vector<int> longest_trip(int N, int D)
{
	vector<int> ans;
	if (D == 3)
	{
		for (int i = 0; i < N; i++)
		{
			ans.push_back(i);
		}
		return ans;
	}
	if (D == 2)
	{
		deque<int> d;
		int sksel = 0;
		if (are_connected({ 0 }, { 1 }))
		{
			d.push_back(0);
			d.push_back(1);
			sksel = 2;
		}
		else
		{
			d.push_back(0);
			d.push_back(2);
			d.push_back(1);
			sksel = 3;
		}
		for (int i = sksel; i < N; i++)
		{
			if (are_connected({ i }, { d.back() }))
			{
				d.push_back(i);
			}
			else
			{
				d.push_front(i);
			}
		}
		while(!d.empty())
		{
			ans.push_back(d.back());
			d.pop_back();
		}
		return ans;
	}
	vector<int> a = { 0 }, b = {1};
	for (int i = 2; i < N; i++)
	{
		if (are_connected({ a.back() }, { i }))
		{
			a.push_back(i);
		}
		else if (are_connected({ b.back() }, {i}))
		{
			b.push_back(i);
		}
		else
		{
			for (int j = b.size() - 1; j >= 0; j--)
			{
				a.push_back(b[j]);
			}
			b.clear();
			b.push_back(i);
		}
	}
	if (a.size() > b.size())
		return a;
	return b;
}
| # | 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... |