rt,#18 RE 了,跪求大佬帮助卡常/指出错误orz
#include<iostream>
#define lc tr[p].ch[0]
#define rc tr[p].ch[1]
using namespace std;
const int N=3e5+5;
struct Tr{
int sum,laz,ch[2];
}tr[15501000];
int n,q,tid=1;
inline void pushup(int p){
tr[p].sum=tr[lc].sum+tr[rc].sum;
}
inline void pushdown(int p,int l,int r){
int mid=(l+r)/2;
if(!lc) lc=++tid;
if(!rc) rc=++tid;
if(tr[p].laz==-1) return;
tr[lc].laz=tr[p].laz,tr[rc].laz=tr[p].laz;
tr[lc].sum=tr[p].laz*(mid-l+1);
tr[rc].sum=tr[p].laz*(r-mid);
tr[p].laz=-1;
}
inline void update(int l,int r,int p,int pl,int pr,int k){
pushdown(p,pl,pr);
if(l<=pl&&pr<=r){
tr[p].sum=(pr-pl+1)*k;
tr[p].laz=k;return;
}
int mid=(pl+pr)/2;
if(l<=mid) update(l,r,lc,pl,mid,k);
if(mid<r) update(l,r,rc,mid+1,pr,k);
pushup(p);
}
signed main(){
scanf("%d%d",&n,&q);int l,r,k;
while(q--){
scanf("%d%d%d",&l,&r,&k);
if(k==1) update(l,r,1,1,n,1);
else update(l,r,1,1,n,0);
printf("%d\n",(n-tr[1].sum));
}
return 0;
}