제출 #1343594

#제출 시각아이디문제언어결과실행 시간메모리
1343594vtnooGift Exchange (JOI24_ho_t4)C++20
50 / 100
2594 ms8244 KiB
#include <bits/stdc++.h>
#define L(i,j,k) for(int i=(j);i<=(k);i++)
#define R(i,j,k) for(int i=(j);i>=(k);i--)
#define all(x) x.begin(),x.end()
#define sz(a) ((int)a.size())
#define pb push_back
using namespace std;
typedef long long ll; 

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
	int n;cin>>n;
    vector<int>a(n),b(n);
    L(i,0,n-1)cin>>a[i];
    L(i,0,n-1)cin>>b[i];
    int q;cin>>q;
    while(q--){
        int l,r;cin>>l>>r;l--,r--;
        vector<tuple<int,int,int>>ranges;
        set<pair<int,int>>pending;
        L(i,l,r){
            ranges.pb({b[i],a[i],i});
            pending.insert({b[i],i});
        }    
        sort(all(ranges));
        vector<bool>used(n,0);
        bool possible=true;
        int m=sz(ranges);
        L(i,0,m-1){
            auto [s,e,j]=ranges[i];
            pair<int,int>erased={s,j};
            bool change=false;
            if(pending.count(erased)){
                pending.erase(erased);
                change=true;
            }
            auto it=pending.lower_bound({e+1,-1});
            if(it==begin(pending)){
                possible=false;
                break;
            }
            it--;
            // cout<<a[j]<<" "<<b[j]<<endl;
            // cout<<"EMPAREJO CON"<<endl;
            // cout<<a[it->second]<<" "<<b[it->second]<<endl;
            pending.erase(it);
            if(change)pending.insert(erased);
        }
        if(possible){
            cout<<"Yes"<<endl;
        }else{
            cout<<"No"<<endl;
        }
    }
}
#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...