树状数组

来源:互联网 发布:软件数据字典设计 编辑:程序博客网 时间:2024/05/06 20:48
#include <iostream>   #include <cstdio>  #include <string.h>  using namespace std;  int c[32001];  int a[15010];  int lowbit(int x){      return x&(-x);  }  void modify(int i){      while(i<=32001){          c[i]++;          i+=lowbit(i);      }  }  int sum(int i){      int s=0;      while(i>0){          s+=c[i];          i-=lowbit(i);      }      return s;  }  int main(){      int n;      scanf("%d",&n);       int x,y;      for(int i=1;i<=n;i++){          scanf("%d%d",&x,&y);          a[sum(++x)]++;          modify(x);      }      for(int i=0;i<n;i++){          printf("%d\n",a[i]);      }      return 0;  }  

0 0