Submission #793832

#TimeUsernameProblemLanguageResultExecution timeMemory
793832vjudge1Passport (JOI23_passport)C++17
22 / 100
25 ms2656 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; const int N = 3010; const int INF = 1e9; int dp[N][N]; int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n; cin >> n; int L[n + 1], R[n + 1]; for(int i = 1; i <= n; i++) cin >> L[i] >> R[i]; int mx[n + 1] = {}; for(int i = 1; i <= n; i++) mx[i] = max(mx[i - 1], R[i]); if(n <= 300) { dp[1][n] = 0; for(int len = n - 1; len >= 1; len--) { for(int l = 1; l <= n - len + 1; l++) { int r = l + len - 1; dp[l][r] = INF; for(int i = l; i <= r; i++) { dp[l][r] = min(dp[l][r], dp[min(l, L[i])][max(r, R[i])] + 1); } } } int q; cin >> q; while(q--) { int x; cin >> x; cout << (dp[x][x] == INF ? -1 : dp[x][x]) << '\n'; } return 0; } int q; cin >> q; int x, res = 0; cin >> x; while(x < n) { res++; if(mx[x] == x) { cout << -1; return 0; } x = max(x, mx[x]); } cout << res; }
#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...