nyist 123 士兵杀敌四

#include<stdio.h>
#include<string.h>
#define N 1000010
int c[N];
int m = 0;
int l(int n)
{
    return n&(-n);
}

void add(int k,int num)
{

    while(k>0)
    {
        c[k] += num;
        k -= l(k);
    }

}
int print(int k)
{
    int sum = 0;
    while(k<m)
    {
        sum+=c[k];
        k += l(k);
    }
    return sum;
}
int main()
{
    int n;
    memset(c,0,sizeof(c));
    scanf("%d%d",&n,&m);
    int i;
    for( i = 0; i < n; i++)
      {
          char ch[6];
          int x,y,num;
          scanf("%s",ch);
          if(ch[0]=='A')
          {
              scanf("%d%d%d",&x,&y,&num);

              add(x-1,-num);
             add(y,num);
          }
        else
        {
            scanf("%d",&x);
            printf("%d\n",print(x));
        }
      }
}

原文地址:https://www.cnblogs.com/yyroom/p/2785423.html