// Alir3za.Zar3 -> Shiraz , Iran
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n; cin >> n;
int a[n+1] , b[n+1];
for (int i=1; i<=n; i++)
cin >> a[i];
for (int i=1; i<=n; i++)
cin >> b[i];
int q; cin >> q;
while (q--)
{
int l,r; cin >> l >> r;
set<pair<int,int>> A,B;
for (int i=l; i<=r; i++)
{
A.insert( { a[i] , i } );
B.insert( { b[i] , i } );
}
bool mrk = true;
vector<pair<int,int>> op;
while (!A.empty())
{
auto [x , idx] = *A.begin();
auto [y , idy] = *B.begin();
A.erase(A.begin());
B.erase(B.begin());
if (x < y)
{
mrk = false;
break;
}
if (idx == idy)
{
if (B.empty())
{
if (op.empty())
{
mrk = false;
break;
}
auto [v , u] = op.back();
if (v >= y)
{
op.push_back( { x , u } );
continue;
}
else
{
mrk = false;
break;
}
}
if (!op.empty())
{
auto [v , u] = op.back();
if (v >= y)
{
op.push_back( { x , u } );
continue;
}
}
auto [z , idz] = *B.begin();
if (x < z)
{
mrk = false;
break;
}
B.erase(B.begin());
B.insert({y,idy});
}
else
{
op.push_back({ x , y });
}
}
if (mrk)
cout << "Yes\n";
else
cout << "No\n";
}
}
# | 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... |