不肯透露姓名的羣衆無心間發現驚人祕密,c++
skyh默默坦白真相,ui
這到底是人性的淪喪仍是道德的泯滅?spa
mikufun/Yu-shi:我要講個鬼故事,有一個......3d
yzh:是你爺爺~(捂耳唱歌)blog
fhw:o(三聲)o(二聲)o(一聲)get
Yu-shi:我能吞下shit拉出堅果it
mikufun:Yu-shi你後邊有。。。。。。有東西!!!(關燈做驚恐狀)循環
yzh:ooo!!im
fhw:是你爺爺!d3
yzh:ji ji boon!qj了Myy(自行領會)!!!
Yu-shi:我能將個人1e36條內褲染成白色
mikufun:大家不以爲......
fhw:是你爺爺!!!!
yzh:ooo!!!
fhw:ji ji boon!qj了Myy(自行領會)!!!
(無限循環)
(mikufun講故事徹底失敗.jpd)
'''
#include<bits/stdc++.h>
#define ll long long
#define re register
#define cri const register int
using namespace std;
inline int read(){
re int a=0;re char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') a=(a<<1)+(a<<3)+ch-'0',ch=getchar();
return a;
}
char s[100010];
int n,m,t[30],ls[300010],rs[300010];
int f[300010],da[300010][30],be[30],en[30];
void build(cri k,cri l,cri r){
f[k]=-1,ls[k]=l,rs[k]=r;
if(l==r){
da[k][s[l]-'a']=1;
return;
}
int mid=l+r>>1;
build(k<<1,l,mid);build(k<<1|1,mid+1,r);
da[k][1]=da[k<<1][1]+da[k<<1|1][1];
da[k][2]=da[k<<1][2]+da[k<<1|1][2];
da[k][3]=da[k<<1][3]+da[k<<1|1][3];
da[k][4]=da[k<<1][4]+da[k<<1|1][4];
da[k][5]=da[k<<1][5]+da[k<<1|1][5];
da[k][6]=da[k<<1][6]+da[k<<1|1][6];
da[k][7]=da[k<<1][7]+da[k<<1|1][7];
da[k][8]=da[k<<1][8]+da[k<<1|1][8];
da[k][9]=da[k<<1][9]+da[k<<1|1][9];
da[k][10]=da[k<<1][10]+da[k<<1|1][10];
da[k][11]=da[k<<1][11]+da[k<<1|1][11];
da[k][12]=da[k<<1][12]+da[k<<1|1][12];
da[k][13]=da[k<<1][13]+da[k<<1|1][13];
da[k][14]=da[k<<1][14]+da[k<<1|1][14];
da[k][15]=da[k<<1][15]+da[k<<1|1][15];
da[k][16]=da[k<<1][16]+da[k<<1|1][16];
da[k][17]=da[k<<1][17]+da[k<<1|1][17];
da[k][18]=da[k<<1][18]+da[k<<1|1][18];
da[k][19]=da[k<<1][19]+da[k<<1|1][19];
da[k][20]=da[k<<1][20]+da[k<<1|1][20];
da[k][21]=da[k<<1][21]+da[k<<1|1][21];
da[k][22]=da[k<<1][22]+da[k<<1|1][22];
da[k][23]=da[k<<1][23]+da[k<<1|1][23];
da[k][24]=da[k<<1][24]+da[k<<1|1][24];
da[k][25]=da[k<<1][25]+da[k<<1|1][25];
da[k][0]=da[k<<1][0]+da[k<<1|1][0];
}
void cs(cri k,cri L,cri R,cri x){
if(R<L) return;
if(ls[k]>=L&&rs[k]<=R){
f[k]=x;
for(re int i=0;i<=25;i++)
if(i==x) da[k][i]=rs[k]-ls[k]+1;
else da[k][i]=0;
return;
}
if(f[k]!=-1){
f[k<<1]=f[k<<1|1]=f[k],
da[k<<1][0]=da[k<<1|1][0]=0,
da[k<<1][1]=da[k<<1|1][1]=0,
da[k<<1][2]=da[k<<1|1][2]=0,
da[k<<1][3]=da[k<<1|1][3]=0,
da[k<<1][4]=da[k<<1|1][4]=0,
da[k<<1][5]=da[k<<1|1][5]=0,
da[k<<1][6]=da[k<<1|1][6]=0,
da[k<<1][7]=da[k<<1|1][7]=0,
da[k<<1][8]=da[k<<1|1][8]=0,
da[k<<1][9]=da[k<<1|1][9]=0,
da[k<<1][10]=da[k<<1|1][10]=0,
da[k<<1][11]=da[k<<1|1][11]=0,
da[k<<1][12]=da[k<<1|1][12]=0,
da[k<<1][13]=da[k<<1|1][13]=0,
da[k<<1][14]=da[k<<1|1][14]=0,
da[k<<1][15]=da[k<<1|1][15]=0,
da[k<<1][16]=da[k<<1|1][16]=0,
da[k<<1][17]=da[k<<1|1][17]=0,
da[k<<1][18]=da[k<<1|1][18]=0,
da[k<<1][19]=da[k<<1|1][19]=0,
da[k<<1][20]=da[k<<1|1][20]=0,
da[k<<1][21]=da[k<<1|1][21]=0,
da[k<<1][22]=da[k<<1|1][22]=0,
da[k<<1][23]=da[k<<1|1][23]=0,
da[k<<1][24]=da[k<<1|1][24]=0,
da[k<<1][25]=da[k<<1|1][25]=0,
da[k<<1][f[k]]=rs[k<<1]-ls[k<<1]+1,
da[k<<1|1][f[k]]=rs[k<<1|1]-ls[k<<1|1]+1,
f[k]=-1;
}
re int mid=ls[k]+rs[k]>>1;
if(L<=mid) cs(k<<1,L,R,x);
if(R>mid) cs(k<<1|1,L,R,x);
da[k][1]=da[k<<1][1]+da[k<<1|1][1];
da[k][2]=da[k<<1][2]+da[k<<1|1][2];
da[k][3]=da[k<<1][3]+da[k<<1|1][3];
da[k][4]=da[k<<1][4]+da[k<<1|1][4];
da[k][5]=da[k<<1][5]+da[k<<1|1][5];
da[k][6]=da[k<<1][6]+da[k<<1|1][6];
da[k][7]=da[k<<1][7]+da[k<<1|1][7];
da[k][8]=da[k<<1][8]+da[k<<1|1][8];
da[k][9]=da[k<<1][9]+da[k<<1|1][9];
da[k][10]=da[k<<1][10]+da[k<<1|1][10];
da[k][11]=da[k<<1][11]+da[k<<1|1][11];
da[k][12]=da[k<<1][12]+da[k<<1|1][12];
da[k][13]=da[k<<1][13]+da[k<<1|1][13];
da[k][14]=da[k<<1][14]+da[k<<1|1][14];
da[k][15]=da[k<<1][15]+da[k<<1|1][15];
da[k][16]=da[k<<1][16]+da[k<<1|1][16];
da[k][17]=da[k<<1][17]+da[k<<1|1][17];
da[k][18]=da[k<<1][18]+da[k<<1|1][18];
da[k][19]=da[k<<1][19]+da[k<<1|1][19];
da[k][20]=da[k<<1][20]+da[k<<1|1][20];
da[k][21]=da[k<<1][21]+da[k<<1|1][21];
da[k][22]=da[k<<1][22]+da[k<<1|1][22];
da[k][23]=da[k<<1][23]+da[k<<1|1][23];
da[k][24]=da[k<<1][24]+da[k<<1|1][24];
da[k][25]=da[k<<1][25]+da[k<<1|1][25];
da[k][0]=da[k<<1][0]+da[k<<1|1][0];
}
void add(cri k,cri L,cri R){
if(ls[k]>=L&&rs[k]<=R){
for(re int i=0;i<26;i++)
if(be[i]<=rs[k]&&en[i]>=ls[k])
cs(k,max(ls[k],be[i]),min(en[i],rs[k]),i);
return;
}
if(f[k]!=-1){
f[k<<1]=f[k<<1|1]=f[k],
da[k<<1][0]=da[k<<1|1][0]=0,
da[k<<1][1]=da[k<<1|1][1]=0,
da[k<<1][2]=da[k<<1|1][2]=0,
da[k<<1][3]=da[k<<1|1][3]=0,
da[k<<1][4]=da[k<<1|1][4]=0,
da[k<<1][5]=da[k<<1|1][5]=0,
da[k<<1][6]=da[k<<1|1][6]=0,
da[k<<1][7]=da[k<<1|1][7]=0,
da[k<<1][8]=da[k<<1|1][8]=0,
da[k<<1][9]=da[k<<1|1][9]=0,
da[k<<1][10]=da[k<<1|1][10]=0,
da[k<<1][11]=da[k<<1|1][11]=0,
da[k<<1][12]=da[k<<1|1][12]=0,
da[k<<1][13]=da[k<<1|1][13]=0,
da[k<<1][14]=da[k<<1|1][14]=0,
da[k<<1][15]=da[k<<1|1][15]=0,
da[k<<1][16]=da[k<<1|1][16]=0,
da[k<<1][17]=da[k<<1|1][17]=0,
da[k<<1][18]=da[k<<1|1][18]=0,
da[k<<1][19]=da[k<<1|1][19]=0,
da[k<<1][20]=da[k<<1|1][20]=0,
da[k<<1][21]=da[k<<1|1][21]=0,
da[k<<1][22]=da[k<<1|1][22]=0,
da[k<<1][23]=da[k<<1|1][23]=0,
da[k<<1][24]=da[k<<1|1][24]=0,
da[k<<1][25]=da[k<<1|1][25]=0,
da[k<<1][f[k]]=rs[k<<1]-ls[k<<1]+1,
da[k<<1|1][f[k]]=rs[k<<1|1]-ls[k<<1|1]+1,
f[k]=-1;
}
re int mid=ls[k]+rs[k]>>1;
if(L<=mid) add(k<<1,L,R);
if(R>mid) add(k<<1|1,L,R);
da[k][1]=da[k<<1][1]+da[k<<1|1][1];
da[k][2]=da[k<<1][2]+da[k<<1|1][2];
da[k][3]=da[k<<1][3]+da[k<<1|1][3];
da[k][4]=da[k<<1][4]+da[k<<1|1][4];
da[k][5]=da[k<<1][5]+da[k<<1|1][5];
da[k][6]=da[k<<1][6]+da[k<<1|1][6];
da[k][7]=da[k<<1][7]+da[k<<1|1][7];
da[k][8]=da[k<<1][8]+da[k<<1|1][8];
da[k][9]=da[k<<1][9]+da[k<<1|1][9];
da[k][10]=da[k<<1][10]+da[k<<1|1][10];
da[k][11]=da[k<<1][11]+da[k<<1|1][11];
da[k][12]=da[k<<1][12]+da[k<<1|1][12];
da[k][13]=da[k<<1][13]+da[k<<1|1][13];
da[k][14]=da[k<<1][14]+da[k<<1|1][14];
da[k][15]=da[k<<1][15]+da[k<<1|1][15];
da[k][16]=da[k<<1][16]+da[k<<1|1][16];
da[k][17]=da[k<<1][17]+da[k<<1|1][17];
da[k][18]=da[k<<1][18]+da[k<<1|1][18];
da[k][19]=da[k<<1][19]+da[k<<1|1][19];
da[k][20]=da[k<<1][20]+da[k<<1|1][20];
da[k][21]=da[k<<1][21]+da[k<<1|1][21];
da[k][22]=da[k<<1][22]+da[k<<1|1][22];
da[k][23]=da[k<<1][23]+da[k<<1|1][23];
da[k][24]=da[k<<1][24]+da[k<<1|1][24];
da[k][25]=da[k<<1][25]+da[k<<1|1][25];
da[k][0]=da[k<<1][0]+da[k<<1|1][0];
}
void get(cri k,cri L,cri R){
if(ls[k]>=L&&R>=rs[k]){
for(re int i=0;i<26;i++)
t[i]+=da[k][i];
return;
}
if(f[k]!=-1){
f[k<<1]=f[k<<1|1]=f[k],
da[k<<1][0]=da[k<<1|1][0]=0,
da[k<<1][1]=da[k<<1|1][1]=0,
da[k<<1][2]=da[k<<1|1][2]=0,
da[k<<1][3]=da[k<<1|1][3]=0,
da[k<<1][4]=da[k<<1|1][4]=0,
da[k<<1][5]=da[k<<1|1][5]=0,
da[k<<1][6]=da[k<<1|1][6]=0,
da[k<<1][7]=da[k<<1|1][7]=0,
da[k<<1][8]=da[k<<1|1][8]=0,
da[k<<1][9]=da[k<<1|1][9]=0,
da[k<<1][10]=da[k<<1|1][10]=0,
da[k<<1][11]=da[k<<1|1][11]=0,
da[k<<1][12]=da[k<<1|1][12]=0,
da[k<<1][13]=da[k<<1|1][13]=0,
da[k<<1][14]=da[k<<1|1][14]=0,
da[k<<1][15]=da[k<<1|1][15]=0,
da[k<<1][16]=da[k<<1|1][16]=0,
da[k<<1][17]=da[k<<1|1][17]=0,
da[k<<1][18]=da[k<<1|1][18]=0,
da[k<<1][19]=da[k<<1|1][19]=0,
da[k<<1][20]=da[k<<1|1][20]=0,
da[k<<1][21]=da[k<<1|1][21]=0,
da[k<<1][22]=da[k<<1|1][22]=0,
da[k<<1][23]=da[k<<1|1][23]=0,
da[k<<1][24]=da[k<<1|1][24]=0,
da[k<<1][25]=da[k<<1|1][25]=0,
da[k<<1][f[k]]=rs[k<<1]-ls[k<<1]+1,
da[k<<1|1][f[k]]=rs[k<<1|1]-ls[k<<1|1]+1,
f[k]=-1;
}
re int mid=ls[k]+rs[k]>>1;
if(L<=mid) get(k<<1,L,R);
if(R>mid) get(k<<1|1,L,R);
}
void all(cri k){
if(ls[k]==rs[k]){
for(re int i=0;i<26;i++)
if(da[k][i]){
s[ls[k]]=i+'a';
return;
}
return;
}
if(f[k]!=-1){
f[k<<1]=f[k<<1|1]=f[k],
da[k<<1][0]=da[k<<1|1][0]=0,
da[k<<1][1]=da[k<<1|1][1]=0,
da[k<<1][2]=da[k<<1|1][2]=0,
da[k<<1][3]=da[k<<1|1][3]=0,
da[k<<1][4]=da[k<<1|1][4]=0,
da[k<<1][5]=da[k<<1|1][5]=0,
da[k<<1][6]=da[k<<1|1][6]=0,
da[k<<1][7]=da[k<<1|1][7]=0,
da[k<<1][8]=da[k<<1|1][8]=0,
da[k<<1][9]=da[k<<1|1][9]=0,
da[k<<1][10]=da[k<<1|1][10]=0,
da[k<<1][11]=da[k<<1|1][11]=0,
da[k<<1][12]=da[k<<1|1][12]=0,
da[k<<1][13]=da[k<<1|1][13]=0,
da[k<<1][14]=da[k<<1|1][14]=0,
da[k<<1][15]=da[k<<1|1][15]=0,
da[k<<1][16]=da[k<<1|1][16]=0,
da[k<<1][17]=da[k<<1|1][17]=0,
da[k<<1][18]=da[k<<1|1][18]=0,
da[k<<1][19]=da[k<<1|1][19]=0,
da[k<<1][20]=da[k<<1|1][20]=0,
da[k<<1][21]=da[k<<1|1][21]=0,
da[k<<1][22]=da[k<<1|1][22]=0,
da[k<<1][23]=da[k<<1|1][23]=0,
da[k<<1][24]=da[k<<1|1][24]=0,
da[k<<1][25]=da[k<<1|1][25]=0,
da[k<<1][f[k]]=rs[k<<1]-ls[k<<1]+1,
da[k<<1|1][f[k]]=rs[k<<1|1]-ls[k<<1|1]+1,
f[k]=-1;
}
re int mid=ls[k]+rs[k]>>1;
all(k<<1),all(k<<1|1);
}
int main(){
int x,y,z,o;
scanf("%d%d%s",&n,&m,s+1);
build(1,1,n);
for(re int i=1;i<=m;i++){
x=read();y=read();z=read();
o=x;
get(1,x,y);
if(z)
for(re int j=0;j<26;j++){
if(t[j]) be[j]=o,en[j]=o+t[j]-1,o=en[j]+1;
else be[j]=en[j]=0;
}
else
for(re int j=25;j>=0;j--){
if(t[j]) be[j]=o,en[j]=o+t[j]-1,o=en[j]+1;
else be[j]=en[j]=0;
}
memset(t,0,sizeof t);
add(1,x,y);
}
all(1);
for(re int i=1;i<=n;i++) putchar(s[i]);
}
'''
(友情提醒:踢球需謹慎,生命價更高)