Submission #1284855

#TimeUsernameProblemLanguageResultExecution timeMemory
1284855Faisal_SaqibGift Exchange (JOI24_ho_t4)C++20
0 / 100
2593 ms6620 KiB
#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];
bool recur(int l,int r)
{
    if(l==r)
        return 0;
    if(l+1==r)
        return a[tmp1[l].second]>tmp1[r].first;
    bool ans=a[tmp1[l].second]>tmp1[r].first;
    for(int j=l;j<r and !ans;j++)
    {
        ans|=(recur(l,j)&recur(j+1,r));
    }
    return ans;
}
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;
        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=(a[tmp1[1].second]>tmp1[sz].first);
        // for(int i=sz-2;i>=2;i--)
        // {
        //     pos|=(a[tmp1[1].second]>tmp1[i].first  and a[tmp1[i+1].second]>tmp1[sz].first);
        // }
        cout<<(recur(1,sz)?"Yes":"No")<<endl;
    }
}
// 5 3 6
// 1 2 4
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...