제출 #826300

#제출 시각아이디문제언어결과실행 시간메모리
826300MohamedAhmed04Long Mansion (JOI17_long_mansion)C++14
10 / 100
764 ms10116 KiB
#include <bits/stdc++.h>

using namespace std ;

const int MAX = 5000 + 10 ;

int arr[MAX] ;
int n ;

vector<int>v[MAX] ;
bitset<MAX>s[MAX] ;

int L[MAX] , R[MAX] ;

int main()
{
	ios_base::sync_with_stdio(0) ;
	cin.tie(0) ;
	cin>>n ;
	for(int i = 1 ; i <= n-1 ; ++i)
		cin>>arr[i] ;
	for(int i = 1 ; i <= n ; ++i)
	{
		int sz ;
		cin>>sz ;
		v[i].resize(sz) ;
		for(auto &x : v[i])
			cin>>x , s[i][x] = 1 ;
	}
	for(int i = 1 ; i <= n ; ++i)
		L[i] = R[i] = i ;
	for(int k = 0 ; k < n+1 ; ++k)
	{
		for(int i = 1 ; i <= n ; ++i)
		{
			if(L[i]-1 >= 1 && s[i][arr[L[i]-1]])
				L[i]-- , s[i] |= s[L[i]] ;
			if(R[i]+1 <= n && s[i][arr[R[i]]])
				R[i]++ , s[i] |= s[R[i]] ;
		}
	}
	int q ;
	cin>>q ;
	while(q--)
	{
		int x , y ;
		cin>>x>>y ;
		if(y >= L[x] && y <= R[x])
			cout<<"YES\n" ;
		else
			cout<<"NO\n" ;
	}
	return 0 ;
}		
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...