这份代码能过……
#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";
}
}
}
}