Submission #1172679

#TimeUsernameProblemLanguageResultExecution timeMemory
1172679stdfloatNew Home (APIO18_new_home)C++20
0 / 100
5096 ms86072 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define ff	first
#define ss	second
#define pii	pair<int, int>

int main() {
	ios::sync_with_stdio(false); cin.tie(nullptr);

	int n, K, q;
	cin >> n >> K >> q;

	map<int, vector<pii>> m;
	for (int i = 1; i <= n; i++) {
		int x, t, a, b;
		cin >> x >> t >> a >> b;

		m[a].push_back({x, t});
		m[b + 1].push_back({-x, t});
	}

	for (int i = 1; i <= q; i++) {
		int l, y;
		cin >> l >> y;

		m[y].push_back({l, -i});
	}

	vector<int> ans(q + 1);
	vector<multiset<int>> s(K + 1);
	for (auto i : m) {
		for (auto [x, t] : i.ss) {
			if (x < 0) s[t].erase(s[t].find(-x));
			else if (0 < t) s[t].insert(x);
		}

		for (auto [x, t] : i.ss) {
			if (0 < t) continue;
		
			t = -t;
			for (int j = 1; j <= K; j++) {
				if (s[j].empty()) {
					ans[t] = -1;
					break;
				}

				auto z = s[j].upper_bound(x);

				int mn = INT_MAX;
				if (z != s[j].end()) mn = *z - x;
				if (z != s[j].begin()) mn = *--z - x; 
			
				ans[t] = max(ans[t], mn);
			}
		}
	}

	for (int i = 1; i <= q; i++)
		cout << ans[i] << '\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...