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...