이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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[goal + i]) {
X += (1ll << i);
}
return X;
}
}
return -1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |