Submission #1240417

#TimeUsernameProblemLanguageResultExecution timeMemory
1240417Muhammad_AneeqStations (IOI20_stations)C++20
0 / 100
306 ms560 KiB
#include "stations.h"
#include <vector>
#include <iostream>
using namespace std;
int const N=1e3+10;
vector<int>nei[N]={};
vector<int>ret;
int tm=0;
void dfs(int u,int p=-1,int dp=0)
{
	if (!dp)
		ret[u]=tm++;
	for (auto i:nei[u])
	{
		if (i==p) continue;
			dfs(i,u,1-dp);
	}
	if (dp)
		ret[u]=tm++;
}
vector<int> label(int n, int k, vector<int> u, vector<int> v) 
{
	tm=0;
	for (int i=0;i<n;i++)
		nei[i]={};
	ret={};
	for (int i=0;i+1<n;i++)
	{
		nei[u[i]].push_back(v[i]);
		nei[v[i]].push_back(u[i]);
	}
	ret.resize(n);
	dfs(0);
	return ret;
}

int find_next_station(int s, int t, vector<int> c) 
{
	if (c.size()==1)
		return c[0];
	if (s>c.back())
	{
		if (t>s||t<c[1])
			return c[0];
		int ans=c[0];
		for (int j=1;j<c.size();j++)
		{
			if (t>=c[j])
				ans=c[j];
		}
		return ans;
	}
	if (!s)
	{
		int ans=0;
		for (int j=0;j<c.size();j++)
		{
			if (t<=c[j])
				ans=c[j];
		}	
		return ans;
	}
	if (t<s||t>c[c.size()-2])
		return c.back();
	int ans=0;
	for (int j=0;j+1<c.size();j++)
	{
		if (t<=c[j])
			ans=c[j];
	}
	return ans;
}
#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...