Submission #1069582

#TimeUsernameProblemLanguageResultExecution timeMemory
1069582Faisal_SaqibLongest Trip (IOI23_longesttrip)C++17
5 / 100
10 ms596 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll int
#define vll vector<ll>
#define pb push_back
bool are_connected(std::vector<int> A, std::vector<int> B);
std::vector<int> longest_trip(int n, int D)
{
	if(D==3)
	{
		vector<int> ans;
		for(int i=0;i<n;i++)
			ans.push_back(i);
		return ans;
	}
	else if(D==2)
	{
		vector<int> ans;
		for(int i=n-1;i>0;i--)
			ans.pb(i);
		ll s=0;
		vll order={0};
		while(ans.size()>1)
		{
			ll f1=ans.back();
			ans.pop_back();
			ll f2=ans.back();
			ans.pop_back();
			bool r1=are_connected({s},{f1});
			bool r2=are_connected({s},{f2});
			bool r3=are_connected({f1},{f2});
			if(r1 and r3)
			{
				order.pb(f1);
				order.pb(f2);
			}
			else if(r2 and r3)
			{
				order.pb(f2);
				order.pb(f1);
			}
			s=order.back();
		}
		if(ans.size()>0)
		{
			ll l=ans.back();
			bool r1=are_connected({s},{l});
			if(r1)
				order.pb(l);
		}
		return order;
	}
	return {};
}
#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...