#include <iostream>
#include <algorithm>
#include <vector>
#include "stations.h"
#define ll long long
#define ldb long double
#define endl '\n'
#define For(i,l,r) for(int i=l;i<=r;i++)
#define ForD(i,r,l) for(int i=r;i>=l;i--)
#define ff first
#define ss second
#define pb push_back
#define all(x) x.begin(),x.end()
#define sz(x) (signed)x.size()
#define unq(x) x.resize(unique(all(x))-x.begin())
#define F "TASK"
#define fio freopen(F".INP","r",stdin);freopen(F".OUT","w",stdout);
using namespace std;
const int N=100003;
int tdfs=0,tin[N*2],tout[N*2],d[N];
vector<int> big,ans,g[N];
void dfs(int u,int p=0) {
tin[u]=++tdfs;
for(auto v: g[u])
if (v!=p) {
d[v]=d[u]+1;
dfs(v,u);
}
tout[u]=++tdfs;
}
vector<int> label(int n,int k,vector<int> u,vector<int> v) {
ans.resize(n);
For(i,0,n-1) g[i].clear();
big.clear();
tdfs=-1;
For(i,0,n-2) {
g[u[i]].pb(v[i]);
g[v[i]].pb(u[i]);
}
dfs(0);
//cout << "tin: " << tin[0] << endl;
For(i,0,n-1)
if (d[i]&1) big.pb(tin[i]);
else big.pb(tout[i]);
sort(all(big));
unq(big);
For(i,0,n-1)
if (d[i]&1) {
ans[i]=lower_bound(all(big),tin[i])-big.begin();
}
else {
ans[i]=lower_bound(all(big),tout[i])-big.begin();
//cout << i << " " << tout[i] << endl;
}
return ans;
}
int find_next_station(int s,int t,vector<int> c) {
bool check=1;
sort(all(c));
for(auto u: c) {
//cout << "u: " << u << endl;
if (t==u) return t;
if (u>s) check=0;
}
if (sz(c)==1) return c.back();
if (check) {
int mi=*min_element(all(c));
int mi1=2e9;
for(auto u: c)
if (u!=mi && u<mi1) mi1=u;
if (mi==0) {
mi1=0;
mi=-1;
}
if (t<s && t>mi1) {
for(int i=0;i<sz(c);i++) {
if (c[i]==mi) continue;
int nxt=(i==sz(c)-1?s-1:c[i+1]-1);
if (t>c[i] && t<nxt) return c[i];
}
} else return mi;
} else {
int ma=*max_element(all(c));
int ma1=-2e9;
for(auto u: c)
if (u!=ma && u>ma1) ma1=u;
if (t>s && t<ma1) {
for(int i=0;i<sz(c);i++) {
if (c[i]==ma) continue;
int prv=(i==0?s+1:c[i-1]+1);
if (t>prv && t<c[i]) return c[i];
}
} else return ma;
}
return -1;
}
# | 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... |