Submission #1202274

#TimeUsernameProblemLanguageResultExecution timeMemory
1202274AMel0nStations (IOI20_stations)C++20
0 / 100
305 ms608 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
#define F first 
#define S second

#include "stations.h"

vector<int> in, out, dep;
vector<vector<int>> adj;
int cnt = 0;
// Euler Tour
void dfs(int n, int p) {
    dep[n] = dep[p]+1;
    in[n] = cnt;
    cnt++;
    for(auto c: adj[n]) {
        if (c != p) dfs(c, n);
    }
    out[n] = cnt;
    cnt++;
}

vector<int> label(int n, int k, vector<int> u, vector<int> v) {
    in.assign(n, 0);
    out.assign(n, 0);
    dep.assign(n, -1);
    adj.assign(n, vector<int>());
    FOR(i, v.size()) {
        adj[u[i]].push_back(v[i]);
        adj[v[i]].push_back(u[i]);
    }
    dfs(0,0);

    map<int, int> mp;
    FOR(i, n) {
        if (dep[i] % 2) {
            mp[in[i]] = i;
        } else {
            mp[out[i]] = i;
        }
    }

    vector<int> res(n);
    int dist = 0;
    for(auto it = mp.begin(); it != mp.end(); it++) {
        res[it->S] = dist;
        dist++;
    }
    
    return res;
}


int find_next_station(int s, int t, vector<int> c) {
    int n = c.size();
    // if s_entry <= t <= s_exit, t is in the subtree of s
    if (s < c[0]) { // preorder 
        if (s < t && t <= c[0]) return c[0];
        for(int i = 1; i < n - 1; i++) {
            if (c[i-1] < t && t <= c[i]) return c[i];
        }
        if (s > 0) return c[n-1];
    }
    if (s > c[n-1]) { // postorder
        for(int i = 1; i < n - 1; i++) {
            if (c[i] <= t && t < c[i+1]) return c[i];
        }
        if (c[n-1] <= t && t < s) return c[n-1];
        if (s > 0) return c[0];
    }
}

// signed main() {
//     cin.tie(0); ios::sync_with_stdio(false);

// }

Compilation message (stderr)

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:75:1: warning: control reaches end of non-void function [-Wreturn-type]
   75 | }
      | ^
#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...