//============================================================================
//
// > File : poj2352.cpp
// > Author : flowertree
// > Time : 2015年12月20日
// > Algorithm : 树状数组
//
//============================================================================
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
#define MAX 320005
int c[MAX];
int level[MAX];
int lowbit(int n)
{
return n & (-n);
}
int sum(int n)
{
int sum = 0;
while(n > 0)
{
sum += c[n];
n -= lowbit(n);
}
return sum;
}
void change(int position, int n, int x)
{
while(position <= n)
{
c[position] += x;
position += lowbit(position);
}
}
int main()
{
int m, x, y;
memset(level, 0, sizeof(level));
cin >> m;
for(int i = 0; i < m; i++)
{
scanf("%d%d", &x, &y);
int temp = sum(x + 1);
level[temp]++;
change(x + 1, MAX, 1);
}
for(int i = 0; i < m; i++)
printf("%d\n", level[i]);
system("pause");
return 0;
}
poj 2352
最新推荐文章于 2019-07-18 16:53:12 发布