제출 #1280593

#제출 시각아이디문제언어결과실행 시간메모리
1280593avighna길고양이 (JOI20_stray)C++20
0 / 100
24 ms12276 KiB
#include "Anthony.h"
#include <queue>
#include <string>
#include <vector>

std::vector<int> Mark(int N, int M, int A, int B, std::vector<int> U, std::vector<int> V) {
  std::vector<int> x(M, -1);
  std::vector<std::vector<int>> adj(N);
  for (int i = 0; i < M; ++i) {
    adj[U[i]].push_back(V[i]);
    adj[V[i]].push_back(U[i]);
  }
  std::vector<bool> vis(N);
  std::vector<int> dep(N);
  std::queue<int> q;
  q.push(0);
  vis[0] = true;
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    for (int &i : adj[u]) {
      if (vis[i]) {
        continue;
      }
      vis[i] = true;
      dep[i] = dep[u] + 1;
      q.push(i);
    }
  }
  std::string s = "110100";
  for (int i = 0; i < M; ++i) {
    x[i] = s[std::min(dep[U[i]], dep[V[i]]) % 6] - '0';
  }
  return x;
}
#include "Catherine.h"
#include <algorithm>
#include <cassert>
#include <string>
#include <vector>

namespace {

int A, B;

bool exploratory = true;
std::string enc;
std::string corr = "110100";
std::vector<std::string> poss;
int prev = 0;

} // namespace

void Init(int A, int B) {
  ::A = A;
  ::B = B;
  for (int i = 0; i < 6; ++i) {
    std::string t;
    for (int j = 0; j < 6; ++j) {
      t.push_back(corr[(i + j) % 6]);
    }
    poss.push_back(t);
  }
}

int Move(std::vector<int> y) {
  auto add = [&](int x) {
    enc.push_back(x + '0');
    return prev = x;
  };
  int z = y[0], o = y[1];
  auto available = [&]() -> int {
    if (z == 0) {
      return 1;
    }
    if (o == 0) {
      return 0;
    }
    return z > o;
  };
  if (z + o == 0) {
    exploratory = false;
    return -1;
  }
  if (!exploratory) {
    if (z == o) {
      return add(!prev);
    }
    return add(available());
  }
  if (enc.length() == 6) {
    exploratory = false;
    auto it = std::find(poss.begin(), poss.end(), enc);
    if (it == poss.end()) {
      return -1;
    }
  }
  return add(available());
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...