已经过样例
#include<cstdio>
#include<cstring>
using namespace std;
#define re register int
#define lc (p<<1)
#define rc (p<<1|1)
const int N=1e5+10;
int a[N];
inline int read(){
re x=0;register char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar());
for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<1)+(x<<3)+(ch^48);
return x;
}
struct lineTree{
int tag[N<<2],left0[N<<2],right0[N<<2],
left1[N<<2],right1[N<<2],sum0[N<<2],sum1[N<<2],
tot0[N<<2],tot1[N<<2];
inline void swap(re &x,re &y){re t=x;x=y;y=t;}
inline int min(re x,re y){return x<y?x:y;}
inline int min(re x,re y,re z){x=min(x,y);return min(x,z);}
inline int max(re x,re y){return x>y?x:y;}
inline int max(re x,re y,re z){x=max(x,y);return max(x,z);}
lineTree(){
memset(tag,-1,sizeof(tag));
memset(left0,0,sizeof(left0));
memset(right0,0,sizeof(right0));
memset(left1,0,sizeof(left1));
memset(right1,0,sizeof(right1));
memset(tot0,0,sizeof(tot0));