Submission #1351509

#TimeUsernameProblemLanguageResultExecution timeMemory
1351509jumpStations (IOI20_stations)C++20
0 / 100
3066 ms2162688 KiB
#include "stations.h"
#include <bits/stdc++.h>
int lab=0;
std::vector<int> adj[1010];
std::vector<int> Labels;
void dfs(int curr,int par,bool b){
	if(b)Labels[curr]=lab++;
	for(auto to:adj[curr]){
		if(to==par)continue;
		dfs(to,curr,!b);
	}
	if(!b)Labels[curr]=lab++;
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	Labels.resize(n);
	for(int i=0;i<n-1;i++){
		adj[u[i]].push_back(v[i]);
		adj[v[i]].push_back(u[i]);
	}
	dfs(0,0,0);
	//for(auto num:Labels)std::cout << num << ' ';
	return Labels;
}
int find_next_station(int s, int t, std::vector<int> c) {
	//std::sort(c.begin(),c.end());
	bool mi=false;
	for(auto num:c){
		if(num>s)
		mi=true;
		if(num==t)return num;
	}
	if(mi){
		if(t>c.back()||t<s)return c[c.size()-1];
		int idx = std::upper_bound(c.begin(),c.end(),t)-c.begin();
		return c[std::min(idx,(int)(c.size()-1))];
	}
	else{
		if(t<=*c.begin()||t>s)return c[0];
		int idx = std::lower_bound(c.begin(),c.end(),t)-c.begin();
		return c[std::min(idx,(int)(c.size()-1))];
	}
}
#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...