题目大意:
解决:树状数组,关键是要将x轴的下标从一开始可以将x都加1
#include <iostream> #include <cstdio> using namespace std; const int N=32005; int n; int c[N]; int lev[N]; int lowbit(int x) { return x&(-x); } void updata(int pos,int inc) { for(int i=pos;i<N;i+=lowbit(i)) c[i]+=inc; } int getsum(int pos) { int sum=0; for(int i=pos;i;i-=lowbit(i)) sum+=c[i]; return sum; } int main() { int i, a,b; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d%d",&a,&b); lev[getsum(a+1)]++; updata(a+1,1); } for(i=0;i<n;i++) printf("%d\n",lev[i]); system("pause"); return 0; }