제출 #341560

#제출 시각아이디문제언어결과실행 시간메모리
341560KoDAmusement Park (JOI17_amusement_park)C++17
28 / 100
26 ms3336 KiB
#include "Joi.h"

void Joi(int N, int M, int A[], int B[], long long X, int T) {
  if (T <= 2) {
    for (int i = 0; i < 60; ++i) {
      MessageBoard(i, X >> i & 1);
    }
    for (int i = 60; i < N; ++i) {
      MessageBoard(i, 0);
    }
  }
  if (T == 3) {
    for (int i = 0; i < N; ++i) {
      const auto d = i % 60;
      MessageBoard(i, X >> d & 1);
    }
  }
}
#include "Ioi.h"
#include <vector>

namespace {

template <class T>
using Vec = std::vector<T>;

Vec<Vec<int>> graph;
Vec<int> value;

void write(const int u, const int p) {
  for (const auto v: graph[u]) {
    if (value[v] == -1) {
      value[v] = Move(v);
      write(v, u);
    }
  }
  if (p != -1) {
    Move(p);
  }
}

};

long long Ioi(int N, int M, int A[], int B[], int P, int V, int T) {
  graph.resize(N);
  value.resize(N, -1);
  for (int i = 0; i < M; ++i) {
    graph[A[i]].push_back(B[i]);
    graph[B[i]].push_back(A[i]);
  }
  value[P] = V;
  if (T <= 2) {
    write(P, -1);
    long long X = 0;
    for (int i = 0; i < 60; ++i) {
      if (value[i]) {
        X += (1ll << i);
      }
    }
    return X;
  }
  if (T == 3) {
    int goal = P / 60 * 60;
    if (goal + 60 > N) {
      goal -= 60;
    }
    while (P > goal) {
      for (const auto v: graph[P]) {
        if (v < P) {
          value[v] = Move(v);
          P = v;
          break;
        }
      }
    } 
    long long X = 0;
    for (int i = 0; i < 60; ++i) {
      if (value[P]) {
        X += (1ll << i);
      }
      for (const auto v: graph[P]) {
        if (v > P) {
          value[v] = Move(v);
          P = v;
          break;
        }
      }
    }
    return X;
  }
  return -1;
}
#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...