| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1351771 | MuhammadSaram | Stations (IOI20_stations) | C++20 | 293 ms | 592 KiB |
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
const int M = 1000 + 1;
vector<int> nei[M];
int dep[M], st[M], en[M], t;
void dfs(int u,int p=-1)
{
st[u]=t++;
for (int i:nei[u])
if (i!=p)
dep[i]=dep[u]+1, dfs(i,u);
en[u]=t++;
}
vector<int> label(int n, int k, vector<int> u, vector<int> v)
{
t=0;
for (int i=0;i<n;i++) nei[i].clear();
for (int i=0;i<n-1;i++)
nei[u[i]].push_back(v[i]), nei[v[i]].push_back(u[i]);
dfs(0);
vector<pair<int,int>> v1;
for (int i=0;i<n;i++)
{
if (dep[i]%2==0) v1.push_back({st[i],i});
else v1.push_back({en[i],i});
}
sort(v1.begin(), v1.end());
vector<int> ans(n);
for (int i=0;i<n;i++)
ans[v1[i].second]=i;
return ans;
}
int find_next_station(int s, int t, vector<int> c)
{
int m=c.size();
sort(c.begin(), c.end());
if (s<c[0])
{
int x=1;
if (!s) x=0;
if (s<t && m>x && t<=c[m-1-x])
{
for (int i=0;i<m;i++)
if (c[i]>=t)
return c[i];
}
else
return c[m-1];
}
else
{
if (m>1 && s>t && c[1]<=t)
{
for (int i=m-1;i>=0;i--)
if (c[i]<=t)
return c[i];
}
else
return c[0];
}
}Compilation message (stderr)
| # | 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... | ||||
