Submission #793843

# Submission time Handle Problem Language Result Execution time Memory
793843 2023-07-26T07:23:37 Z vjudge1 Passport (JOI23_passport) C++17
22 / 100
2000 ms 19028 KB
#ifdef Home
#define _GLIBCXX_DEBUG
#endif // Home

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;

const int N = 200200;

pair < int, int > pass[N];
int n, q, x;
int dp[2525][2525];

void solve_subtask_1() {
    int ans = 1, pr_r = 1, cr_r = pass[1].second, nw_r = 1;
    for(; cr_r < n;) {
        nw_r = cr_r;
        for(int r = pr_r + 1; r <= cr_r; ++ r) {
            if(pass[r].second > nw_r) {
                nw_r = pass[r].second;
            }
        }
        if(nw_r == cr_r) {
            cout << "-1";
            return;
        }
        ++ ans;
        pr_r = cr_r;
        cr_r = nw_r;
    }
    cout << ans << '\n';
}

void recur(int l, int r) {
    for(int i = l; i <= r; ++ i) {
        auto &[nl, nr] = pass[i];
        if(nl < l && dp[nl][max(r, nr)] > dp[l][r] + 1) {
            dp[nl][max(r, nr)] = dp[l][r] + 1;
            recur(nl, max(r, nr));
        }
        if(r < nr && dp[min(l, nl)][nr] > dp[l][r] + 1) {
            dp[min(l, nl)][nr] = dp[l][r] + 1;
            recur(min(l, nl), nr);
        }
    }
}

void solve_subtask_2_3() {
    for(int i = 1; i <= n; ++ i) {
        for(int j = i; j <= n; ++ j) {
            dp[i][j] = N;
        }
    }
    dp[pass[x].first][pass[x].second] = 1;
    recur(pass[x].first, pass[x].second);
    cout << (dp[1][n] == N ? -1 : dp[1][n]);
}

main() {
#ifdef Home
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif // Home
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> n;
    for(int i = 1; i <= n; ++ i) {
        cin >> pass[i].first >> pass[i].second;
    } 
    cin >> q >> x;
    if(q == 1 && x == 1) {
        solve_subtask_1();
        return 0;
    } 
    if(q == 1) {
        solve_subtask_2_3();
        return 0;
    }
}

Compilation message

passport.cpp:63:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   63 | main() {
      | ^~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 24 ms 1832 KB Output is correct
5 Correct 24 ms 1836 KB Output is correct
6 Correct 24 ms 1888 KB Output is correct
7 Correct 19 ms 1812 KB Output is correct
8 Correct 16 ms 1488 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 0 ms 340 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
11 Correct 6 ms 1620 KB Output is correct
12 Correct 50 ms 1620 KB Output is correct
13 Correct 5 ms 1620 KB Output is correct
14 Correct 6 ms 1620 KB Output is correct
15 Correct 2 ms 1748 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 0 ms 340 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
11 Correct 6 ms 1620 KB Output is correct
12 Correct 50 ms 1620 KB Output is correct
13 Correct 5 ms 1620 KB Output is correct
14 Correct 6 ms 1620 KB Output is correct
15 Correct 2 ms 1748 KB Output is correct
16 Execution timed out 2057 ms 19028 KB Time limit exceeded
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 0 ms 340 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
11 Correct 6 ms 1620 KB Output is correct
12 Correct 50 ms 1620 KB Output is correct
13 Correct 5 ms 1620 KB Output is correct
14 Correct 6 ms 1620 KB Output is correct
15 Correct 2 ms 1748 KB Output is correct
16 Execution timed out 2057 ms 19028 KB Time limit exceeded
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 24 ms 1832 KB Output is correct
5 Correct 24 ms 1836 KB Output is correct
6 Correct 24 ms 1888 KB Output is correct
7 Correct 19 ms 1812 KB Output is correct
8 Correct 16 ms 1488 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 340 KB Output is correct
15 Correct 0 ms 340 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 0 ms 340 KB Output is correct
18 Correct 0 ms 340 KB Output is correct
19 Correct 6 ms 1620 KB Output is correct
20 Correct 50 ms 1620 KB Output is correct
21 Correct 5 ms 1620 KB Output is correct
22 Correct 6 ms 1620 KB Output is correct
23 Correct 2 ms 1748 KB Output is correct
24 Execution timed out 2057 ms 19028 KB Time limit exceeded
25 Halted 0 ms 0 KB -