动态开点线段树一直TLE#17
#pragma GCC diagnostic error "-std=c++11"
#pragma GCC target("avx")
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#include<iostream>
using namespace std;
int n,q;
int sum[15000000],lazy[15000000],tot;
int lson[15000000],rson[15000000];
inline int read()
{
register int x=0,t=1;
register char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
{
t=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*t;
}
inline void write(int x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9)
{
write(x/10);
}
putchar(x%10+'0');
}
inline void pushdown(int l,int r,int i)
{
if(lazy[i]==0)
{
return;
}
sum[i]=(lazy[i]%2)*(r-l+1);
if(l==r)
{
return;
}
if(!lson[i])
{
tot++;
lson[i]=tot;
}
lazy[lson[i]]=lazy[i];
if(!rson[i])
{
tot++;
rson[i]=tot;
}
lazy[rson[i]]=lazy[i];
lazy[i]=0;
}
void modify(int l,int r,int ql,int qr,int k,int i)
{
pushdown(l,r,i);
if(qr<l||r<ql)
{
return;
}
if(ql<=l&&r<=qr)
{
lazy[i]=k;
pushdown(l,r,i);
return;
}
int mid=(l+r)>>1;
if(!lson[i])
{
tot++;
lson[i]=tot;
}
modify(l,mid,ql,qr,k,lson[i]);
if(!rson[i])
{
tot++;
rson[i]=tot;
}
modify(mid+1,r,ql,qr,k,rson[i]);
sum[i]=sum[lson[i]]+sum[rson[i]];
}
int main()
{
//cin>>n>>q;
n=read(),q=read();
tot++;
while(q--)
{
int l,r,k;
//cin>>l>>r>>k;
l=read(),r=read(),k=read();
modify(1,n,l,r,k,1);
write(n-sum[1]);
putchar('\n');
}
return 0;
}