Submission #1265534

#TimeUsernameProblemLanguageResultExecution timeMemory
1265534Robert_juniorGift Exchange (JOI24_ho_t4)C++20
0 / 100
2593 ms6724 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back  
#define all(x) x.begin(), x.end()
#define ins insert
#define F first
#define S second
const int N = 5e5 + 7, mod = 998244353;
int a[N], b[N];
void solve(){
	int n, q;
	cin>>n;
	for(int i = 1; i <= n; i++){
		cin>>a[i];
	}
	for(int i = 1; i <= n; i++){
		cin>>b[i];
	}
	cin>>q;
	while(q--){
		int l, r;
		cin>>l>>r;
		set<int>s, s1;
		for(int i = l; i <= r; i++){
			s.ins(a[i]);
		}
		string ans = "Yes\n";
		for(int i = l; i <= r; i++){
			auto it = s.lower_bound(b[i]);
			if(it == s.end()){
				//cout<<i<<' ';
				ans = "No\n";
			}
			else if(*it == a[i]){
				if(*it == *s.rbegin()){
					auto it1 = s1.lower_bound(*it);
					if(s1.size() && it1 != s1.begin()){
						it1--;
						int ok = *it1; 
						s.erase(it);
						s.ins(ok);
						s1.erase(it1);
					}
					else{
						ans = "No\n";
					}
				}
				else{
					it++;
					s1.ins(*it);
					s.erase(it);
				}
			}
			else{
				s1.ins(*it);
				s.erase(it);
			}
		}
		cout<<ans;
	}
}
signed main(){
	ios_base :: sync_with_stdio(false);
	cin.tie(0);
    //freopen("area.in", "r", stdin);
    //freopen("area.out", "w", stdout);
    int t = 1;
    //cin>>t;
    while(t--){
        solve();
    }
}
#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...