直接暴力做所有操作即可
实测即使区间全卡满也只跑不到三秒,对于测试用例跑的比自己写的分块还要快
upd: 不到三秒是错的,因为操作二开销要比操作一更大,会超过三秒。不过全操作二仍然不到四秒,还是稳稳通过。
#include <iostream>
using namespace std;
using ll = long long;
int n;
int q;
ll a[100001];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
while (q--) {
int op, l, r, x;
cin >> op >> l >> r >> x;
if (op == 1) {
for (int i = l; i <= r; i++) {
a[i] += x;
}
continue;
}
int res = 0;
for (int i = l; i <= r; i++) {
if (a[i] < x) {
res++;
}
}
cout << res << '\n';
}
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号