Submission #1214229

#TimeUsernameProblemLanguageResultExecution timeMemory
1214229trimkusGift Exchange (JOI24_ho_t4)C++20
10 / 100
2594 ms2140 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;
		//~ cerr << "Pool = ";
		//~ for (auto& u : pool) {
			//~ cerr << u << " ";
		//~ }
		//~ cerr << "\n";
		for (int i = 0; i < (int)ord.size() - 1; ++i) {
			int j = ord[i];
			int idx = upper_bound(begin(pool), end(pool), b[j]) - begin(pool);
			int left = (int)pool.size() - idx - i;
			//~ cerr << b[j] << " = " << left << "\n";
			if (left <= 1) {
				ok = false;
				break;
			}
		}
		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...