Submission #319658

# Submission time Handle Problem Language Result Execution time Memory
319658 2020-11-06T03:23:21 Z spatarel Stations (IOI20_stations) C++17
8 / 100
973 ms 972 KB
#include "stations.h"
#include <algorithm>
#include <stdio.h>
#include <vector>

const int MAX_N = 1000;

bool visited[1 + MAX_N];
std::vector<int> neighbours[1 + MAX_N];

int counter;

void visit(std::vector<int> &labels, int u) {
  labels[u] = counter;
  //printf("%d->%d\n", u, counter);
  counter++;
}

void dfs(std::vector<int> &labels, int u, bool parity = false) {
  visited[u] = true;
  if (parity) {
    visit(labels, u);
  }
  for (int v : neighbours[u]) {
    if (!visited[v]) {
      dfs(labels, v, !parity);
    }
  }
  if (!parity) {
    visit(labels, u);
  }
}

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
  std::vector<int> labels(n);
  for (int i = 0; i < n - 1; i++) {
    neighbours[u[i]].push_back(v[i]);
    neighbours[v[i]].push_back(u[i]);
  }
  counter = 0;
  for (int i = 0; i < n; i++) {
    visited[i] = false;
  }
  dfs(labels, 0);
  for (int i = 0; i < n - 1; i++) {
    neighbours[i].clear();
  }
  return labels;
}

int find_next_station(int s, int t, std::vector<int> c) {
  int answer;
  std::sort(c.begin(), c.end());
  /*
  for (int n : c) {
    printf("%d ", n);
  }
  printf("\n");//*/
  if (s < c[0]) {
    int p = c.back();
    int l = s;
    int r = c.end()[-2];
    if (l <= t && t <= r) {
      int i = c.size() - 2;
      while (i >= 0 && c[i] >= t) {
        i--;
      }
      answer = c[i + 1];
    } else {
      answer = p;
    }
  } else {
    int p = c[0];
    int l = c[1];
    int r = s;
    //printf("%d %d\n", l, r);
    if (l <= t && t <= r) {
      int i = 1;
      while (i < (int)c.size() && c[i] <= t) {
        i++;
      }
      answer = c[i - 1];
    } else {
      answer = p;
    }
  }
  //printf("%d->%d (%d)\n", s, t, answer);
  return answer;
}
# Verdict Execution time Memory Grader output
1 Incorrect 540 ms 864 KB Wrong query response.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 559 ms 912 KB Output is correct
2 Correct 608 ms 948 KB Output is correct
3 Correct 973 ms 844 KB Output is correct
4 Correct 724 ms 968 KB Output is correct
5 Correct 676 ms 884 KB Output is correct
6 Correct 457 ms 736 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 604 ms 972 KB Wrong query response.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 969 ms 856 KB Output is correct
2 Correct 656 ms 756 KB Output is correct
3 Incorrect 552 ms 848 KB Wrong query response.
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 571 ms 884 KB Wrong query response.
2 Halted 0 ms 0 KB -