Submission #1214225

#TimeUsernameProblemLanguageResultExecution timeMemory
1214225trimkusGift Exchange (JOI24_ho_t4)C++20
0 / 100
0 ms328 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;
		vector<int> pool;
		vector<int> ord;
		for (int i = l; i <= r; ++i) {
			ord.push_back(i);
			pool.push_back(a[i]);
		}
		sort(begin(pool), end(pool));
		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];
			int add = -1;
			if (a[j] == pool.back()) {
				add = pool.back();
				pool.pop_back();
			}
			if (!pool.size() || pool.back() < b[j]) {
				ok = false;
				break;
			}
			pool.pop_back();
			if (add != -1) pool.push_back(add);
		}
		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...