#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10;
int a[N],b[N],sz=0;
pair<int,int> tmp1[N],tmp[N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
ll n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
cin>>b[i];
}
ll q;
cin>>q;
while(q--)
{
ll l,r;
cin>>l>>r;
sz=0;
set<pair<ll,ll>> tep;
set<ll> rem;
for(int i=l;i<=r;i++)
{
tep.insert({a[i],i});
// tmp[++sz]=a[i];
tmp1[++sz]={b[i],i};
}
// sort(tmp+1,tmp+sz+1);
sort(tmp1+1,tmp1+sz+1);
// int cur=2;
bool pos=1;
for(int i=sz;i>=1;i--)
{
auto it=tep.lower_bound({tmp1[i].first,-1});
if(it!=end(tep) and it->second==tmp1[i].second)
{
it++;
}
// auto it1=
if(it==end(tep))
{
auto it1=rem.lower_bound(tmp1[i].first);
if(it1!=end(rem))
{
rem.erase(it1);
continue;
}
pos=0;
break;
}
int j=tmp1[i].second;
if(tep.find({a[j],j})!=tep.end())
{
tep.erase({a[j],j});
rem.insert(a[j]);
}
tep.erase(it);
}
// for(int i=1;i<=sz;i++)
// {
// }
cout<<(pos?"Yes":"No")<<endl;
}
}
// 5 3 6
// 1 2 4
| # | 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... |
| # | 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... |