Submission #222261

#TimeUsernameProblemLanguageResultExecution timeMemory
222261dolphingarlicSailing Race (CEOI12_race)C++14
40 / 100
148 ms2680 KiB
#include <bits/stdc++.h> #define FOR(i, x, y) for (int i = x; i < y; i++) typedef long long ll; using namespace std; vector<int> graph[501]; int dp[501][501][2]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, t; cin >> n >> t; FOR(i, 0, n) { int v; cin >> v; while (v) { graph[i].push_back(v - 1); cin >> v; } } FOR(k, 1, n + 1) { FOR(i, 0, n) { int j = (i + k) % n; for (int v : graph[i]) { if ((v > i && v < i + k) || (v > i - n && v < i + k - n)) { dp[i][j][0] = max(dp[i][j][0], max(dp[v][j][0], dp[i][v][1]) + 1); } } for (int v : graph[j]) { if ((v > i && v < i + k) || (v > i - n && v < i + k - n)) { dp[i][j][1] = max(dp[i][j][1], max(dp[v][j][0], dp[i][v][1]) + 1); } } } } if (t) { } else { int ans = 0, best = -1; FOR(i, 0, n) if (max(dp[i][i][0], dp[i][i][1]) > ans) ans = max(dp[i][i][0], dp[i][i][1]), best = i; cout << ans << '\n' << best + 1 << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...