Untitled
domovonok
c_cpp
2 years ago
1.6 kB
12
Indexable
#include "bits/stdc++.h"
using namespace std;
#ifdef LOCAL
#include "debug.h"
#else
#define debug(x...)
#endif
struct event {
int pos, type, id;
bool operator<(event other) const {
if (pos != other.pos) {
return pos < other.pos;
} else {
return type < other.type;
}
}
};
void solve() {
int n;
cin >> n;
vector<int> ans(n);
vector<event> events;
for (int i = 0; i < n; i++) {
int l, r, a, b;
cin >> l >> r >> a >> b;
events.emplace_back(l, -1, i);
events.emplace_back(b, 1, i);
ans[i] = b;
}
int q;
cin >> q;
vector<int> queries(q);
for (int i = 0; i < q; i++) {
cin >> queries[i];
events.emplace_back(queries[i], 0, i);
}
sort(events.begin(), events.end());
reverse(events.begin(), events.end());
multiset<int> ms;
for (event &e : events) {
if (e.type == -1) {
ms.extract(ans[e.id]);
} else if (e.type == 1) {
if (!ms.empty()) {
ans[e.id] = *--ms.end();
}
ms.insert(ans[e.id]);
} else {
if (!ms.empty()) {
queries[e.id] = max(queries[e.id], *--ms.end());
}
}
}
for (int &x : queries) {
cout << x << ' ';
}
cout << '\n';
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int tests = 1;
cin >> tests;
while (tests--) {
solve();
}
return 0;
}Editor is loading...