前三个点A了,之后的都MLE了,有人能帮忙调一调吗
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node{
int l, r;
mutable int v;
bool operator <(const node &q)const{
return l < q.l;
}
};
#define snit set<node>::iterator
set < node > st;
int n, q;
snit split(int pos){
snit it = st.lower_bound({pos, -1, 0});
if(it != st.end() && it -> l == pos) return it;
it --;
int l = it -> l, r = it -> r, v = it -> v;
st.erase(it);
st.insert({l, pos - 1, v});
return st.insert({pos, r, v}).first;
}
void mul(int l, int r, int a, int b){
snit itr = split(r + 1), itl = split(l);
for(snit it = itl; it != itr; it ++)
it -> v = ((it -> r - l + 1) * a) % b;
return ;
}
int sum(int l, int r){
snit itr = split(r + 1), itl = split(l);
int s = 0;
for(snit it = itl; it != itr; it ++)
s += it -> v;
return s;
}
signed main(){
cin >> n >> q;
for(int i = 1; i <= n + 1; i ++){
st.insert({i, i, 0});
}
for(int i = 1; i <= q; i ++){
int opt, l, r, a, b;
cin >> opt >> l >> r;
if(opt == 1){
cin >> a >> b;
mul(l, r, a, b);
}
else cout << sum(l, r) << endl;
}
return 0;
}