樹狀陣列練習 POJ-2352 Stars
阿新 • • 發佈:2018-12-09
#include <stdio.h> #include <string.h> #define N 32010 int t[N]; int ans[N]; int lowbit(int x) { return x & (-x); } int get_sum(int k) { int sum = 0; while (k > 0) { sum += t[k]; k -= lowbit(k); } return sum; } void update(int k, int delta) { while (k <= N) { t[k] += delta; k += lowbit(k); } } int main() { int n; while (scanf("%d", &n) != EOF) { int x, y; memset(t, 0, sizeof(int) * N); memset(ans, 0, sizeof(int) * N); for (int i = 0; i < n; i++) { scanf("%d%d", &x, &y); ans[get_sum(x + 1)]++; update(x + 1, 1); } for (int i = 0; i < n; i++) { printf("%d\n", ans[i]); } } return 0; }