답안 #319657

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
319657 2020-11-06T03:11:07 Z spatarel 기지국 (IOI20_stations) C++17
8 / 100
837 ms 1012 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 = true) {
  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 = 1;
  for (int i = 0; i < n; i++) {
    visited[i] = false;
  }
  dfs(labels, 0);
  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;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 516 ms 884 KB Wrong query response.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 458 ms 948 KB Output is correct
2 Correct 508 ms 984 KB Output is correct
3 Correct 834 ms 736 KB Output is correct
4 Correct 627 ms 756 KB Output is correct
5 Correct 578 ms 960 KB Output is correct
6 Correct 452 ms 864 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 537 ms 884 KB Wrong query response.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 837 ms 1012 KB Output is correct
2 Incorrect 686 ms 856 KB Wrong query response.
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 526 ms 896 KB Wrong query response.
2 Halted 0 ms 0 KB -