Submission #1264074

#TimeUsernameProblemLanguageResultExecution timeMemory
1264074nguyenhuythachLong Mansion (JOI17_long_mansion)C++20
10 / 100
78 ms2632 KiB
#include<bits/stdc++.h> #include<algorithm> #include<random> #include<chrono> #include<cstdlib> #include<ctime> #include<numeric> #include<vector> #include<stack> #include<map> #include<set> #include<queue> #include<iomanip> #define int long long #define ll long long #define L LLONG_MAX #define fi first #define se second #define pii pair<int,int> #define sz(a) ((int)a.size()) #define FOR(i,j,k) for(int i=j;i<=k;i++) #define REP(i,k,j) for(int i=k;i>=j;i--) #define FORD(i,a) for(auto i:a) #define rngdcl mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) #define random(l,r) ((l)+(rng()%(r-l+1))) using namespace std; const int nmax=5001; int n,q; int c[nmax],mark[nmax]; vector<int> a[nmax]; pii tar[nmax]; void input() { cin >> n; FOR(i,1,n-1) cin >> c[i]; FOR(i,1,n) { int b; cin >> b; FOR(j,1,b) { int x; cin >> x; a[i].push_back(x); } } } void solve() { FOR(i,1,n) { FOR(j,1,n) mark[j]=0; int l=i,r=i; bool okl=true,okr=true; FORD(j,a[i]) mark[j]=true; while(okl || okr) { if(r<=n-1 && mark[c[r]]) { r++; FORD(j,a[r]) mark[j]=true; okr=true; } else okr=false; if(l>1 && mark[c[l-1]]) { l--; FORD(j,a[l]) mark[j]=true; okl=true; } else okl=false; } tar[i]={l,r}; } cin >> q; while(q--) { int l,r; cin >> l >> r; if(l<=r) { if(tar[l].se>=r) cout << "YES" << '\n'; else cout << "NO" << '\n'; } else { if(tar[l].fi<=r) cout << "YES" << '\n'; else cout << "NO" << '\n'; } } } signed main() { //freopen(".inp", "r", stdin); //freopen(".out", "w", stdout); ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); input(); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...