Submission #1357110

#TimeUsernameProblemLanguageResultExecution timeMemory
1357110coderg300711Stations (IOI20_stations)C++20
100 / 100
290 ms616 KiB
#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pii pair<int,int>
#define pll pair<long long,long long>
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define rsz resize
#define ass assign
#define F(i,l,r) for(int i=(l);i<(r);++i)
typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;
template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>;
#define each(a,x) for(auto a:x)
#define FOR(i,a) for(int i=0;i<(a);i++)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define eb emplace_back
#define ft front()
#define V vector

#include "stations.h"

V<V<int>> adj;
V<int> labels;
int timer;

void dfs(int u,int p,int dep){
	if(!(dep&1))labels[u]=timer++;
	each(v,adj[u]){
		if(v==p)continue;
		dfs(v,u,dep+1);
	}
	if(dep&1)labels[u]=timer++;
}

V<int> label(int n,int k,V<int> u,V<int> v){
	adj.ass(n,V<int>());
	FOR(i,n-1){
		adj[u[i]].pb(v[i]);
		adj[v[i]].pb(u[i]);
	}
	labels.rsz(n);
	timer=0;
	dfs(0,-1,0);
	return labels;
}

int find_next_station(int s,int t,V<int> c){
	int n=sz(c);
	if(s<c[0]){
		FOR(i,n-1){
			if(t>s && t<=c[i])return c[i];
		}
		return c[n-1];
	}else{
		ROF(i,1,n){
			if(t<s && t>=c[i])return c[i];
		}
		return c[0];
	}
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...