# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1276641 | SmuggingSpun | Long Mansion (JOI17_long_mansion) | C++20 | 94 ms | 6908 KiB |
#include<bits/stdc++.h>
#define taskname "B"
using namespace std;
const int lim = 5e5 + 5;
int n, q, c[lim];
vector<int>a[lim];
namespace sub12{
void solve(){
vector<int>l(n + 1), r(n + 1);
for(int i = 1; i <= n; i++){
bitset<lim>vis;
vis.reset();
for(int& v : a[i]){
vis[v] = true;
}
l[i] = r[i] = i;
while((l[i] > 1 && vis[c[l[i] - 1]]) || (r[i] < n && vis[c[r[i]]])){
while(l[i] > 1 && vis[c[l[i] - 1]]){
l[i]--;
for(int& v : a[l[i]]){
vis[v] = true;
}
}
while(r[i] < n && vis[c[r[i]]]){
r[i]++;
for(int& v : a[r[i]]){
vis[v] = true;
}
}
}
}
for(int _ = 0; _ < q; _++){
int x, y;
cin >> x >> y;
cout << (l[x] <= y && r[x] >= y ? "YES\n" : "NO\n");
}
}
}
namespace sub34{
void solve(){
}
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if(fopen(taskname".inp", "r")){
freopen(taskname".inp", "r", stdin);
}
cin >> n;
for(int i = 1; i < n; i++){
cin >> c[i];
}
int sum_b = 0;
for(int i = 1; i <= n; i++){
int k;
cin >> k;
for(int j = 0; j < k; j++){
int x;
cin >> x;
a[i].push_back(x);
}
sum_b += k;
}
cin >> q;
if(n <= 5000 && sum_b <= 5000){
sub12::solve();
}
else{
sub34::solve();
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |