제출 #1139793

#제출 시각아이디문제언어결과실행 시간메모리
1139793VMaksimoski008Gift Exchange (JOI24_ho_t4)C++20
9 / 100
2594 ms1864 KiB
#include <bits/stdc++.h> #define ar array //#define int long long using namespace std; using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; const int mod = 1e9 + 7; const ll inf = 1e18; const int maxn = 1e5 + 5; struct union_find { int n; vector<int> par, size; union_find(int _n) : n(_n), par(n+1), size(n+1, 1) { for(int i=1; i<=n; i++) par[i] = i; } int find(int u) { if(u == par[u]) return u; return par[u] = find(par[u]); } void uni(int a, int b) { a = find(a); b = find(b); if(a == b) return ; if(size[a] < size[b]) swap(a, b); size[a] += size[b]; par[b] = a; } int get_size(int u) { return size[find(u)]; } }; signed main() { ios_base::sync_with_stdio(false); cout.tie(0); cin.tie(0); int n, q; cin >> n; vector<int> a(n+1), b(n+1); for(int i=1; i<=n; i++) cin >> a[i]; for(int i=1; i<=n; i++) cin >> b[i]; cin >> q; while(q--) { int l, r, ok=1; cin >> l >> r; union_find dsu(n); for(int i=l; i<=r; i++) { for(int j=i+1; j<=r; j++) { if(min(a[i], a[j]) >= max(b[i], b[j])) { dsu.uni(i, j); } } } for(int i=l; i<=r; i++) if(dsu.get_size(i) == 1) ok = 0; cout << (ok ? "Yes" : "No") << '\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...