题意理解了半天,基础的树状数组
#include<stdio.h> #include<iostream> #include<math.h> #include<stdlib.h> #include<algorithm> #include<vector> #include<string.h> #include<queue> #include<stack> #include<set> #include<map> #include <malloc.h> using namespace std; int a[32010]; int b[32010]; int n,x,y; int lowbit(int x) { return x&(-x); } void update(int i) { while (i<=32001) { a[i]+=1; i+=lowbit(i); } } int sum(int i) { int ans = 0; while (i>0) { ans += a[i]; i -= lowbit(i); } return ans; } int main() { while (cin>>n) { for (int i =0 ;i<n;i++) { scanf ("%d %d",&x,&y); b[sum(++x)]++; update(x); } for (int i=0;i<n;i++) printf("%d\n",b[i]); } return 0; }