内啥本蒟蒻的码风很奇怪大家不要介意。 。 。 。
#include <iostream>
#define ll long long
#define MAXX 60005
#define Code using
#define by namespace
#define hrylittle std
Code by hrylittle;
int c,s,r;
class ST{
private:
ll tree[MAXX*4];
ll lazy[MAXX*4];
void pushdown(int node,int l,int r){
if(lazy[node]!=0){
int mid=(l+r)/2;
tree[node*2]-=lazy[node]*1LL*(mid-l+1);
lazy[node*2]+=lazy[node];
tree[node*2+1]-=lazy[node]*1LL*(r-mid);
lazy[node*2+1]+=lazy[node];
lazy[node]=0;
}
return;
}
public:
void build(int node,int l,int r){
if(l==r){
tree[node]=s;
lazy[node]=0;
return;
}
int mid=(l+r)/2;
build(node*2,l,mid);
build(node*2+1,mid+1,r);
tree[node]=tree[node*2]+tree[node*2+1];
return;
}
void updaterange(int node,int l,int r,int ql,int qr,int k){
if(r<ql||l>qr) return;
if(l>=ql&&r<=qr){
tree[node]-=k*1LL*(r-l+1);
lazy[node]+=k;
return;
}
pushdown(node,l,r);
int mid=(l+r)/2;
updaterange(node*2,l,mid,ql,qr,k);
updaterange(node*2+1,mid+1,r,ql,qr,k);
tree[node]=tree[node*2]+tree[node*2+1];
return;
}
char query(int node,int l,int r,int ql,int qr){
if(r<ql||l>qr) return 'T';
if(l>=ql&&r<=qr) return tree[node]<0?'N':'T';
pushdown(node,l,r);
int mid=(l+r)/2;
char left=query(node*2,l,mid,ql,qr);
char right=query(node*2+1,mid+1,r,ql,qr);
if(left=='N'||right=='N') return 'N';
return 'T';
}
}seg;
int main(){
cin>>c>>s>>r;
seg.build(1,1,c);
for(int i=1;i<=r;i++){
int o,d,r;
cin>>o>>d>>r;
seg.updaterange(1,1,c,o,d,r);
cout<<seg.query(1,1,c,o,d)<<endl;
}
return 0;
}
由于我还要补作业,只能在线等半小时sorry