제출 #341558

#제출 시각아이디문제언어결과실행 시간메모리
341558KoDAmusement Park (JOI17_amusement_park)C++17
18 / 100
27 ms3488 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[goal + i]) { X += (1ll << i); } 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...