这是一个树状数组的题目,起初是在杭电OJ做的,做完之后WA了,研究一番,做了稍事修改,一直WA...
找到poj一样的题,结果却AC了...
无语啊!后来得知,杭电这题数据要比题目中的要求大...
把32000改成37000,
才行...
坑爹啊!!
#include <iostream>
#include <stdio.h>
using namespace std;
#define N 37005
int c[N];
int lowbit(int n)
{
return n&(-n);
}
void modify(int n,int delta)
{
while(n<=N)
{
c[n]+=delta;
n+=lowbit(n);
}
}
int sum(int n)
{
int ret=0;
while(n!=0)
{
ret+=c[n];
n-=lowbit(n);
}
return ret;
}
int main()
{
int nn;
while(scanf("%d",&nn)!=EOF)
{
//cin>>nn;
int *result = new int[nn];
//memset(c,0,sizeof(c));
//memset(result,0,sizeof(result));
for(int i=0;i<nn;i++){result[i]=0;}
for(int i=1;i<=N;i++){c[i]=0;}
int x,y;
for(int i=0;i<nn;i++)
{
//cin>>x>>y;
scanf("%d%d",&x,&y);
result[sum(x+1)]++;
modify((x+1),1);
}
for(int i=0;i<nn;i++)
printf("%d\n",result[i]);
//cout<<result[i]<<endl;
}
return 0;
}