Submission #702195

# Submission time Handle Problem Language Result Execution time Memory
702195 2023-02-23T09:56:53 Z Josia Sailing Race (CEOI12_race) C++17
0 / 100
519 ms 16632 KB
#include <bits/stdc++.h>

#define int int64_t

using namespace std;

vector<vector<bool>> graphRev;

int n;
bool type;


int DP[500][500][2][2];


void init() {
    for (int i=0; i<500; i++) {
        for (int j = 0; j<500; j++) {
            for (int k = 0; k<2; k++) {
                for (int l = 0; l<2; l++) {
                    DP[i][j][k][l] = -1;
                }
            }
        }
    }
}


int dp(int l, int r, bool pos, bool start) {
    if (DP[l][r][pos][start] != -1) return DP[l][r][pos][start];
    int res = 0;
    for (int v = (l+1)%n; v!=r; v=(v+1)%n) {
        if (!graphRev[pos?r:l][v]) continue;


        if (start) {
            // if (pos==0) {
                res = max(dp((l+n-1)%n, v, 1, 0)+1, res);
                res = max(dp(v, (r+1)%n, 0, 0)+1, res);
            // }
            // if (pos==1) {
            //     res = max(dp((l+n-1)%n, v, 1, 0)+1, res);
            //     res = max(dp(v, (r+1)%n, 0, 0)+1, res);
            // }
            continue;
        }

        // if (pos==0) {
            res = max(dp(l, v, 1, 0)+1, res);
            res = max(dp(v, r, 0, 0)+1, res);
        // }
        // if (pos==1) {
        //     res = max(dp(l, v, 1, 0)+1, res);
        //     res = max(dp(v, r, 0, 0)+1, res);
        // }
    }
    return DP[l][r][pos][start] = res;
}


signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);

    init();

    cin >> n;
    cin >> type;

    graphRev.assign(n,vector<bool>(n, 0));

    for (int i = 0; i<n; i++) {
        int x;
        cin >> x;
        while (x!=0) {
            graphRev[x-1][i]=1;
            // graphRev[i][x-1]=1;
            cin >> x;
        }
    }
    // for (auto i: graphRev) {
    //     for (int j: i) cerr << j << " ";
    //     cerr << "\n";
    // }
    // cerr << "\n";

    if (type == 0) {
        int res = 0;

        for (int i = 0; i<n; i++) {
            res = max(res, dp(i, i, 0, 1));
            // cerr << "---------\n";
        }

        cout << res << "\n";
        return 0;
    }

    assert(0);


    return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 8044 KB Output isn't correct
2 Runtime error 11 ms 16260 KB Execution killed with signal 6
3 Runtime error 10 ms 16344 KB Execution killed with signal 6
4 Runtime error 10 ms 16340 KB Execution killed with signal 6
5 Incorrect 5 ms 8152 KB Unexpected end of file - int32 expected
6 Runtime error 11 ms 16340 KB Execution killed with signal 6
7 Incorrect 8 ms 8156 KB Output isn't correct
8 Runtime error 12 ms 16340 KB Execution killed with signal 6
9 Incorrect 12 ms 8160 KB Output isn't correct
10 Incorrect 15 ms 8196 KB Output isn't correct
11 Incorrect 16 ms 8180 KB Unexpected end of file - int32 expected
12 Runtime error 11 ms 16340 KB Execution killed with signal 6
13 Runtime error 12 ms 16320 KB Execution killed with signal 6
14 Incorrect 319 ms 8288 KB Unexpected end of file - int32 expected
15 Runtime error 16 ms 16556 KB Execution killed with signal 6
16 Runtime error 13 ms 16592 KB Execution killed with signal 6
17 Runtime error 13 ms 16460 KB Execution killed with signal 6
18 Incorrect 519 ms 8232 KB Unexpected end of file - int32 expected
19 Runtime error 14 ms 16612 KB Execution killed with signal 6
20 Runtime error 13 ms 16632 KB Execution killed with signal 6