Submission #1214223

#TimeUsernameProblemLanguageResultExecution timeMemory
1214223trimkusGift Exchange (JOI24_ho_t4)C++20
0 / 100
2596 ms6532 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;


int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n;
	cin >> n;
	vector<int> a(n), b(n);
	for (int i = 0; i < n; ++i) {
		cin >> a[i];
	}
	for (auto& x : b) cin >> x;
	int q;
	cin >> q;
	while (q--) {
		int l, r;
		cin >> l >> r;
		--l; --r;
		set<int> pool;
		vector<int> ord;
		for (int i = l; i <= r; ++i) {
			ord.push_back(i);
			pool.insert(a[i]);
		}
		sort(begin(ord), end(ord), [&](int x, int y) {
			return b[x] > b[y];
		});
		//~ cerr << "\nStarting query: [" << l << " , " << r << "]:\n";
		bool ok = true;
		for (int i = 0; i < (int)ord.size(); ++i) {
			int j = ord[i];
			auto it = pool.lower_bound(b[j]);
			if (it == pool.end()) {
				ok = false;
				break;
			}
			if (*it == a[j]) {
				it++;
			}
			if (it == pool.end()) {
				ok = false;
				break;
			}
			pool.erase(it);
		}
		cout << (ok ? "Yes\n" : "No\n");
	}
}

#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...