rt,WA 4发,人麻了。
感觉写的挺对的,求 hack。
#include <bits/stdc++.h>
using namespace std;
const int _N = 1e5 + 5;
int T, n, q, a[_N], mx[_N];
int main() {
cin >> T;
while (T--) {
memset(mx, 0, sizeof(mx));
memset(a, 0, sizeof(a));
mx[0] = 0;
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i];
mx[i] = mx[i - 1];
if (a[i] > a[mx[i]]) mx[i] = i;
}
while (q--) {
int w, k, ans = 0;
cin >> w >> k;
ans = 0;
if (w == mx[n]) {
if (mx[n] == 1) ans = k;
else ans = k - mx[n] + 2;
} else if (w > mx[n] || w != mx[w]) ans = 0;
else {
if (w - 2 > k) {
ans = 0;
continue;
}
int r = *upper_bound(mx + 1, mx + n + 1, w);
if (w != 1) ans += 1;
ans += min(k - w + 1, r - w - 1);
}
cout << ans << endl;
}
}
}