Submission #863343

#TimeUsernameProblemLanguageResultExecution timeMemory
863343NeroZeinStations (IOI20_stations)C++17
100 / 100
523 ms1544 KiB
#include "stations.h"
#include "bits/stdc++.h"

using namespace std; 

vector<int> label(int n, int k, vector<int> ui, vector<int> vi) {
  vector<int> labels(n);
  vector<vector<int>> g(n);
  for (int i = 0; i < n - 1; ++i) {
    g[ui[i]].push_back(vi[i]);
    g[vi[i]].push_back(ui[i]);
  }
  int cu = 0;
  function<void(int, int, bool)> Dfs = [&](int v, int p, bool uin) {
    if (uin) {
      labels[v] = cu++; 
    }
    for (int u : g[v]) {
      if (u != p) {
        Dfs(u, v, uin ^ 1); 
      }
    }
    if (!uin) {
      labels[v] = cu++; 
    }
  };
  Dfs(0, 0, 1);
  return labels;
}

int find_next_station(int s, int t, vector<int> c) {
  sort(c.begin(), c.end()); 
  if (c.size() == 1) {
    return c[0]; 
  }
  if (c[0] < s) {//I have my tin 
    int l = c[1], r = s; 
    if (t >= l && t <= r) {
      for (int i = (int) c.size() - 1; i >= 0; --i) {
        if (c[i] <= t) {
          return c[i]; 
        }
      }
    } else {
      return c[0]; 
    }
  } else {
    int l = s, r = c[c.size() - 2];
    if (t >= l && t <= r) {
      for (int i = 0; i < (int) c.size(); ++i) {
        if (c[i] >= t) {
          return c[i]; 
        }
      }
    } else {
      return c.back(); 
    }
  }
}

Compilation message (stderr)

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