Submission #1176067

#TimeUsernameProblemLanguageResultExecution timeMemory
1176067VMaksimoski008Passport (JOI23_passport)C++17
40 / 100
2105 ms1114112 KiB
#include <bits/stdc++.h> #define ar array using namespace std; signed main() { ios_base::sync_with_stdio(false); cout.tie(0); cin.tie(0); int n; cin >> n; vector<int> L(n+1), R(n+1); for(int i=1; i<=n; i++) cin >> L[i] >> R[i]; vector<ar<int, 3> > G[n+1][n+1]; int dp[n+1][n+1]; for(int i=1; i<=n; i++) G[i][i].push_back({ L[i], R[i], 1 }); for(int i=1; i<=n; i++) { for(int j=i+1; j<=n; j++) { G[i][j].push_back({ i+1, j, 0 }); G[i][j].push_back({ i, j-1, 0 }); } } for(int i=1; i<=n; i++) { int mn = 1e9, mx = 0; for(int j=i; j<=n; j++) { mn = min(mn, L[j]); mx = max(mx, R[j]); G[i][j].push_back({ mn, j, 1 }); G[i][j].push_back({ i, mx, 1 }); } } int q; cin >> q; priority_queue<ar<int, 3>, vector<ar<int, 3> >, greater<> > pq; while(q--) { int x; cin >> x; for(int i=1; i<=n; i++) for(int j=i; j<=n; j++) dp[i][j] = 1e9; pq.push({ dp[x][x] = 0, x, x }); while(!pq.empty()) { auto [d, l, r] = pq.top(); pq.pop(); if(dp[l][r] != d) continue; for(auto [l2, r2, w] : G[l][r]) if(dp[l2][r2] > d + w) pq.push({ dp[l2][r2] = d + w, l2, r2 }); } cout << (dp[1][n] == 1e9 ? -1 : dp[1][n]) << '\n'; } }
#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...