第一次写,留做纪念。。。。。。
ACcode:
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
const int Nsize=200000;
const int Msize=5000;
int n,m;
int a[Nsize+10],c[Nsize+10];
int lowbit(int k)
{
return k&(-k);
}
int Sum(int k)
{
int res=0;
for (;k>0;k-=lowbit(k)) res+=c[k];
return res;
}
void Add(int i,int k)
{
for (;i<=n;i+=lowbit(i)) c[i]+=k;
}
int main()
{
int i,j,k,a,b,cas,t=0;
char str[10];
scanf("%d",&cas);
while (cas--)
{
scanf("%d",&n);
memset(c,0,sizeof(c));
for (i=1;i<=n;i++) scanf("%d",&k),Add(i,k);
printf("Case %d:\n",++t);
while (scanf("%s",str))
{
if (str[0]=='E') break;
scanf("%d %d",&a,&b);
//a>b? a=a^b,b=a^b,a=a^b:1;
if (str[0]=='Q') printf("%d\n",Sum(b)-Sum(a-1));
else if (str[0]=='A') Add(a,b);
else Add(a,-b);
}
}
return 0;
}

被折叠的 条评论
为什么被折叠?



