Submission #793843

#TimeUsernameProblemLanguageResultExecution timeMemory
793843vjudge1Passport (JOI23_passport)C++17
22 / 100
2057 ms19028 KiB
#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 (stderr)

passport.cpp:63:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   63 | main() {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...