Submission #222260

#TimeUsernameProblemLanguageResultExecution timeMemory
222260dolphingarlicSailing Race (CEOI12_race)C++14
20 / 100
140 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, 0, n) { 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) FOR(j, 0, n) { if (dp[i][j][0] > ans) ans = dp[i][j][0], best = i; if (dp[i][j][1] > ans) ans = dp[i][j][1], best = j; } cout << ans << '\n' << best + 1 << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...