#include<cstdio>
#include<cstring>
int c[100001]={};
int cool[100001]={};
int n;
int lowbit(int x)
{
return x&(-x);
}
void add(int i,int d)
{
while(i<=n)
{
c[i]+=d;
i+=lowbit(i);
}
}
int getsum(int i)
{
int sum=0;
while(i>0)
{
sum+=c[i];
i-=lowbit(i);
}
return sum;
}
int main()
{
int t;
scanf("%d",&t);
for(int times=1;times<=t;times++)
{
printf("Case %d:\n",times);
memset(c,0,sizeof(c));
memset(cool,0,sizeof(cool));
int q,t;
scanf("%d%d%d",&n,&q,&t);
int j=0;
while(q--)
{
char temp[10];
scanf("%s",temp);
if(temp[0]=='A')
{
j++;
int x;
scanf("%d",&x);
//printf("%d\n",j-cool[x]);
//printf("%d %d\n",j,cool[x]);
if(cool[x]==0)
{
cool[x]=j;
}
else if(j-cool[x]<t)
{
//printf("fuck\n");
add(x,1);
}
else if(j-cool[x]>=t)
{
cool[x]=j;
}
}
if(temp[0]=='Q')
{
int a,b;
scanf("%d%d",&a,&b);
if(a>b)
{
int c=a;
a=b;
b=c;
}
printf("%d\n",getsum(b)-getsum(a-1));
}
}
}
return 0;
}
hrbust 1161 树状数组模版
最新推荐文章于 2019-02-20 21:19:07 发布