Submission #1196996

#TimeUsernameProblemLanguageResultExecution timeMemory
1196996alterioToy Train (IOI17_train)C++20
0 / 100
63 ms832 KiB
#include <bits/stdc++.h> #include "train.h" using namespace std; const int mxn = 15; int n, m; vector<int> a, r, g[mxn], A, B; int nxt[mxn]; bool trip(int start) { bool visited[mxn]; memset(visited, 0, sizeof(visited)); int cur = start, energy = n; while (energy && !visited[cur]) { visited[cur] = 1; energy--; if (nxt[cur] == cur) return r[cur]; cur = nxt[cur]; if (r[cur]) energy = n; } return (energy > 0); } bool check(int start) { int vals[B.size() + 1]; memset(vals, 0, sizeof(vals)); while (vals[0] < g[B[0]].size()) { int cnt = 0; for (auto x : B) { nxt[x] = g[x][vals[cnt++]]; } if (!trip(start)) return 0; int ind = B.size() - 1; vals[ind]++; while (ind > 0 && vals[ind] >= g[B[ind]].size()) { vals[ind] = 0; vals[ind - 1]++; ind--; } } return 1; } bool solve(int start) { int vals[A.size() + 1]; memset(vals, 0, sizeof(vals)); while (vals[0] < g[A[0]].size()) { int cnt = 0; for (auto x : A) { nxt[x] = g[x][vals[cnt++]]; } if (check(start)) return 1; int ind = A.size() - 1; vals[ind]++; while (ind > 0 && vals[ind] >= g[A[ind]].size()) { vals[ind] = 0; vals[ind - 1]++; ind--; } } } vector<int> who_wins(vector<int> _a, vector<int> _r, vector<int> u, vector<int> v) { a = _a, r = _r; n = a.size(), m = u.size(); for (int i = 0; i < n; i++) { if (a[i]) A.push_back(i); else B.push_back(i); } for (int i = 0; i < m; i++) g[u[i]].push_back(v[i]); vector<int> res(n, 0); for (int i = 0; i < n; i++) { res[i] = solve(i); } return res; }

Compilation message (stderr)

train.cpp: In function 'bool solve(int)':
train.cpp:63:1: warning: control reaches end of non-void function [-Wreturn-type]
   63 | }
      | ^
#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...