제출 #862329

#제출 시각아이디문제언어결과실행 시간메모리
862329TAhmed33Osumnjičeni (COCI21_osumnjiceni)C++98
10 / 110
1062 ms7276 KiB
#include <bits/stdc++.h> using namespace std; bool intersect (pair <int, int> a, pair <int, int> b) { return !(a.second < b.first || b.second < a.first); } int main () { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; pair <int, int> arr[n + 1]; for (int i = 1; i <= n; i++) cin >> arr[i].first >> arr[i].second; int nxt[n + 1] = {}; nxt[n] = n; for (int i = n - 1; i >= 1; i--) { nxt[i] = n; for (int j = i + 1; j <= n; j++) { if (intersect(arr[i], arr[j])) { nxt[i] = j - 1; break; } } nxt[i] = min(nxt[i], nxt[i + 1]); } int q; cin >> q; while (q--) { int l, r; cin >> l >> r; int dp[n + 1] = {}; for (int i = r; i >= l; i--) { if (nxt[i] >= r) { dp[i] = 1; } else { dp[i] = 1 + dp[nxt[i] + 1]; } } cout << dp[l] << '\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...