区间更新,求点值
#include <stdio.h>
#include <string.h>
int tree[1000001];
int n;
inline int Lowbit(int x) {
return x & (-x);
}
inline void Update(int pos, int val) {
while (pos <= n) {
tree[pos] += val;
pos += Lowbit(pos);
}
}
inline int Query(int x) {
int sum = 0;
while (x > 0) {
sum += tree[x];
x -= Lowbit(x);
}
return sum;
}
int main() {
int i;
while (~scanf("%d", &n), n) {
memset(tree, 0, sizeof(tree));
for (i = 0; i < n; i++) {
int a, b;
scanf("%d%d", &a, &b);
Update(b + 1, -1);
Update(a, 1);
}
for (i = 1; i < n; i++) {
printf("%d ", Query(i));
}
printf("%d\n", Query(n));
}
return 0;
}