답안 #972054

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
972054 2024-04-30T01:26:24 Z LCJLY Long Mansion (JOI17_long_mansion) C++14
0 / 100
3000 ms 45212 KB
#include <bits/stdc++.h>
using namespace std;
	
#define int long long 
#define ld long double
#define show(x,y) cout << y << " " << #x << endl;
#define show2(x,y,i,j) cout << y << " " << #x << "  " << j << " " << #i << endl;
#define show3(x,y,i,j,p,q) cout << y << " " << #x << "  " << j << " " << #i << "  " << q << " " << #p << endl;
#define show4(x,y) for(auto it:y) cout << it << " "; cout << #x << endl;
typedef pair<long long,long long>pii;
typedef pair<int,pii>pi2;
mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count());
 
vector<int>storage[1000005];

bool f(int val, int l, int r){
	int index=lower_bound(storage[val].begin(),storage[val].end(),l)-storage[val].begin();
	if(index==(int)storage[val].size()) return false;
	if(storage[val][index]<=r) return true;
	return false;
}

unordered_map<int,pii>memo;
int arr[1000005];
int n;
pii dp(int l, int r){
	if(memo.find(l*100005+r)!=memo.end()) return memo[l*100005+r];
	pii ans={l,r};
	if(l!=1&&f(arr[l-1],l,r)){
		pii hold=dp(l-1,r);
		ans.first=min(ans.first,hold.first);
		ans.second=max(ans.second,hold.second);
	}
	if(r!=n&&f(arr[r],l,r)){
		pii hold=dp(l,r+1);
		ans.first=min(ans.first,hold.first);
		ans.second=max(ans.second,hold.second);
	}
	return memo[l*1000005+r]=ans;
}
 
void solve(){
	cin >> n;
	
	for(int x=1;x<n;x++){
		cin >> arr[x];
	}
	
	int temp,temp2;
	for(int x=1;x<=n;x++){
		cin >> temp;
		for(int y=0;y<temp;y++){
			cin >> temp2;
			storage[temp2].push_back(x);
		}
	}
	
	pii ans[n+5];
	for(int x=1;x<=n;x++){
		ans[x]=dp(x,x);
	}
	
	int q;
	cin >> q;
	for(int x=0;x<q;x++){
		cin >> temp >> temp2;
		if(ans[temp].first<=temp2&&ans[temp].second>=temp2){
			cout << "YES\n";
		}
		else cout << "NO\n";
	}
	
}

int32_t main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	int t=1;
	//freopen("in.txt","r",stdin);
	//cin >> t;
	while(t--){
		solve();
	}
}
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3072 ms 25692 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3072 ms 25692 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3023 ms 45212 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3072 ms 25692 KB Time limit exceeded
2 Halted 0 ms 0 KB -