离谱
查看原帖
离谱
500194
George_Je楼主2022/11/25 17:56

这份代码能过……

#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
constexpr int INF = 0x3f3f3f3f;
constexpr int N = 5e4, MAX_N = N + 3;
int n, a [MAX_N], b [MAX_N];
int query (int l, int r) {
	if (l > r) return ~INF;
	return *max_element (b + l, b + r + 1);
}
signed main () {
//	freopen (".in", "r", stdin);
//	freopen (".out", "w", stdout);
	ios::sync_with_stdio (false);
	cin.tie (nullptr);
	cout.tie (nullptr);
	cin >> n;
	for (int i = 1; i <= n; ++i)
		cin >> a [i] >> b [i];
	int q; cin >> q;
	while (q--) {
		static int s, t, l, r;
		static bool p1, p2;
		cin >> s >> t;
		if (s > t) {
			cout << "false\n";
			continue;
		}
		l = upper_bound (a + 1, a + n + 1, s) - a;
		r = lower_bound (a + 1, a + n + 1, t) - a - 1;
		p1 = (s == a [l - 1]);
		p2 = (t == a [r + 1]);
		if (!p1 && !p2) cout << "maybe\n";
		else {
			int mid = query (l, r);
			if (p1 && !p2) cout << (mid < b [l - 1] ? "maybe\n" : "false\n");
			if (!p1 && p2) cout << (mid < b [r + 1] ? "maybe\n" : "false\n");
			if (p1 && p2) {
				if (b [r + 1] > b [l - 1]) cout << "false\n";
				else if (mid >= b [r + 1]) cout << "false\n";
				else if (t - s + 1 == r - l + 3) cout << "true\n";
				else cout << "maybe\n";
			}
		}
	}
}
2022/11/25 17:56
加载中...