제출 #522422

#제출 시각아이디문제언어결과실행 시간메모리
522422KoDKocka (COCI18_kocka)C++17
70 / 70
49 ms4400 KiB
#include <bits/stdc++.h> using std::vector; using std::array; using std::tuple; using std::pair; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int N; std::cin >> N; array<vector<int>, 4> A = {}; for (auto& v : A) { v.resize(N); for (auto& x : v) { std::cin >> x; } } if ([&]() -> bool { for (const int k : {0, 2}) { for (int i = 0; i < N; ++i) { if ((A[k][i] == -1) ^ (A[k + 1][i] == -1)) { return false; } if (A[k][i] + A[k + 1][i] >= N) { return false; } } } for (int i = 0; i < 4; ++i) { for (int j = 0; j < 2; ++j) { const auto& X = A[0]; const auto& Y = A[2]; vector<int> top(N, -1); for (int i = 0; i < N; ++i) { if (X[i] != -1 and top[X[i]] != -1) { top[X[i]] = i; } } for (int i = 0; i < N; ++i) { if (Y[i] == -1 and top[i] != -1) { return false; } if (top[i] != -1 and top[i] < Y[i]) { return false; } } std::swap(A[0], A[2]); } std::swap(A[0], A[2]); std::swap(A[1], A[3]); std::swap(A[0], A[1]); std::reverse(A[2].begin(), A[2].end()); std::reverse(A[3].begin(), A[3].end()); } return true; }()) { std::cout << "DA\n"; } else { std::cout << "NE\n"; } return 0; }
#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...