题目链接:http://poj.org/problem?id=2352
水题。。。
1 //STATUS:C++_AC_204MS_696KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include<vector> 10 #include<queue> 11 #include<stack> 12 #include<map> 13 using namespace std; 14 #define LL long long 15 #define pii pair<int,int> 16 #define Max(a,b) ((a)>(b)?(a):(b)) 17 #define Min(a,b) ((a)<(b)?(a):(b)) 18 #define mem(a,b) memset(a,b,sizeof(a)) 19 #define lson l,mid,rt<<1 20 #define rson mid+1,r,rt<<1|1 21 const int N=32010,INF=0x3f3f3f3f,MOD=4001,STA=1000010; 22 const double DNF=100000000000; 23 24 int sum[N<<2],ans[N/2]; 25 int n,a,b,ret; 26 27 void update(int l,int r,int rt) 28 { 29 if(l==r){ 30 sum[rt]++; 31 return; 32 } 33 int mid=(l+r)>>1; 34 if(a<=mid)update(lson); 35 else update(rson); 36 sum[rt]=sum[rt<<1]+sum[rt<<1|1]; 37 } 38 39 void query(int l,int r,int rt) 40 { 41 if(r<=a){ 42 ret+=sum[rt]; 43 return; 44 } 45 int mid=(l+r)>>1; 46 query(lson); 47 if(a>mid)query(rson); 48 } 49 50 int main() 51 { 52 // freopen("in.txt","r",stdin); 53 int i,j; 54 while(~scanf("%d",&n)) 55 { 56 mem(ans,0); 57 mem(sum,0); 58 for(i=0;i<n;i++){ 59 scanf("%d%d",&a,&b); 60 ret=0; 61 query(0,N-1,1); 62 ans[ret]++; 63 update(0,N-1,1); 64 } 65 66 for(i=0;i<n;i++) 67 printf("%d\n",ans[i]); 68 } 69 return 0; 70 }