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...