Submission #748700

#TimeUsernameProblemLanguageResultExecution timeMemory
748700piOOEStray Cat (JOI20_stray)C++17
29 / 100
58 ms16148 KiB
#include "Anthony.h" #include <queue> #include <utility> #include <vector> namespace { using std::vector; } // namespace std::vector<int> Mark(int N, int M, int A, int B, std::vector<int> U, std::vector<int> V) { vector<vector<int>> G(N); for (int i = 0; i < M; ++i) { G[U[i]].push_back(i); G[V[i]].push_back(i); } std::queue<int> que; vector<int> dist(N, N); vector<int> colors(N, -1); dist[0] = 0; que.push(0); for (; !que.empty(); ) { const int u = que.front(); que.pop(); for (const int i : G[u]) { const int v = U[i] ^ V[i] ^ u; if (dist[v] > dist[u] + 1) { dist[v] = dist[u] + 1; que.push(v); if (A == 2) { if (u == 0) { colors[v] = 0; } else if (G[u].size() >= 3) { colors[v] = ("010011"[colors[u]] == '0') ? 1 : 0; } else { colors[v] = (colors[u] + 1) % 6; } } } } } vector<int> x(M, -1); for (int i = 0; i < M; ++i) { int u = U[i], v = V[i]; if (dist[u] > dist[v]) { std::swap(u, v); } if (A == 2) { x[i] = "010011"[colors[v]] - '0'; } else { x[i] = dist[u] % 3; } } return x; }
#include "Catherine.h" #include <bits/stdc++.h> using namespace std; namespace { int A, B, e = -1; bool ok = false; vector<int> adj; vector<int> code{0, 1, 0, 0, 1, 1}; bool extendable(vector<int> a) { for (int i = 0; i < size(code); ++i) { bool yay = true; for (int k = 0; k < size(a); ++k) { if (a[k] != code[(i + k) % size(code)]) { yay = false; break; } } if (yay) { return true; } } return false; } } void Init(int A, int B) { ::A = A; ::B = B; } int Move(std::vector<int> yy) { vector<int> y = yy; if (e != -1) { y[e] += 1; } int deg = accumulate(y.begin(), y.end(), 0); if (A >= 3) { int fi = -1, se = -1, cnt = 0; for (int i = 0; i < A; ++i) { if (y[i]) { fi = fi == -1 ? i : fi; se = i; cnt += 1; } } if (fi != 0 || se != 2) { return e = fi; } else { return e = se; } } else { if (deg == 2) { if (ok) { return e = find(yy.begin(), yy.end(), 1) - yy.begin(); } int a = -1, b = -1; for (int i = 0; i < A; ++i) { if (y[i]) { a = a == -1 ? i : a; b = i; } } if (e == -1) { adj.push_back(a); adj.push_back(b); return e = b; } int c = a ^ b ^ e; adj.push_back(c); if (adj.size() == 5) { ok = true; if (extendable(adj)) { return -1; } return c; } else { return e = c; } } else { ok = true; int ans = find(y.begin(), y.end(), 1) - y.begin(); if (ans == e) { return -1; } else { return e = ans; } } assert(false); } }

Compilation message (stderr)

Catherine.cpp: In function 'bool {anonymous}::extendable(std::vector<int>)':
Catherine.cpp:14:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |         for (int i = 0; i < size(code); ++i) {
      |                         ~~^~~~~~~~~~~~
Catherine.cpp:17:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |             for (int k = 0; k < size(a); ++k) {
      |                             ~~^~~~~~~~~
#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...