Submission #1264930

#TimeUsernameProblemLanguageResultExecution timeMemory
1264930PlayVoltzLong Mansion (JOI17_long_mansion)C++20
100 / 100
225 ms33584 KiB
#include <cstdio> #include <stdio.h> #include <stdbool.h> #include <iostream> #include <map> #include <vector> #include <climits> #include <stack> #include <string> #include <queue> #include <algorithm> #include <set> #include <unordered_set> #include <unordered_map> #include <cmath> #include <cctype> #include <bitset> #include <iomanip> #include <cstring> #include <numeric> #include <cassert> using namespace std; #define int long long #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second vector<vector<int> > s; bool got(int l, int r, int a){ if (s[a].empty())return 0; auto it=lower_bound(s[a].begin(), s[a].end(), l); if (it!=s[a].end()&&*it<=r)return 1; return 0; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, q, a, b; cin>>n; vector<int> vect(n-1), l(n), r(n); s.resize(n+1); for (int i=0; i<n-1; ++i)cin>>vect[i]; for (int i=0; i<n; ++i){ cin>>b; while (b--)cin>>a, s[a].pb(i); } for (int i=0; i<n; ++i){ l[i]=r[i]=i; bool loop=1; while (loop){ loop=0; if (l[i]&&got(l[i], r[i], vect[l[i]-1])){ r[i]=max(r[i], r[l[i]-1]); l[i]=min(l[i], l[l[i]-1]); loop=1; } if (r[i]!=n-1&&got(l[i], r[i], vect[r[i]]))++r[i], loop=1; } } cin>>q; while (q--){ cin>>a>>b, --a, --b; cout<<((l[a]<=b&&b<=r[a])?"YES\n":"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...