# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1225735 | _rain_ | Long Mansion (JOI17_long_mansion) | C++20 | 114 ms | 38888 KiB |
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=(int)5e5;
int x[N+2],y[N+2],c[N+2],b[N+2];
vector<int>arr[N+2];
int n,q;
namespace subtask1{
bool check(){
return n<=5000;
}
const int LIMIT=5000;
bool f[LIMIT+2][LIMIT+2];
bool cnt[N+2]={};
void main_code(){
for(int i =1;i<=n;++i){
for(int j=0;j<=n;++j) cnt[j]=false;
int l=i,r=i;
bool nxt=true;
for(auto&x:arr[i]) cnt[x]=true;
while (nxt){
nxt=false;
while (r<n && cnt[c[r]]){
for(auto&x:arr[r+1]) cnt[x]=true;
f[i][r+1]=true;
nxt=true;
++r;
}
while (l>1 && cnt[c[l-1]]){
for(auto&x:arr[l-1]) cnt[x]=true;
f[i][l-1]=true;
nxt=true;
--l;
}
}
}
for(int i=1;i<=q;++i){
cout<<(f[x[i]][y[i]]?"YES":"NO")<<'\n';
}
}
}
namespace subtatsk2{
bool check(){
return *max_element(c+1,c+n+1)<=20;
}
void main_code(){
for(int i=1;i<=n;++i){
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0) ; cout.tie(0);
#define task "main"
if (fopen(task".inp","r")){
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
cin>>n;
for(int i=1;i<n;++i) cin>>c[i];
for(int i=1;i<=n;++i){
cin>>b[i];
arr[i].resize(b[i]);
for(auto&x:arr[i]) cin>>x;
}
cin>>q;
for(int i=1;i<=q;++i) cin>>x[i]>>y[i];
if (subtask1::check()){
return subtask1::main_code(),0;
}
return 0;
}
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... |