AcWing 1265. 数星星(树状数组)
原题链接
中等
作者:
pqp
,
2025-06-06 20:44:52
· 天津
,
所有人可见
,
阅读 1
import java.util.*;
import java.io.*;
public class Main
{
static final int N = 15010;
static final int M = 32010;
static int[] ans = new int[N];
static int[] tr = new int[M];
static int n;
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static int nextInt() throws IOException
{
while(st == null || !st.hasMoreTokens())
st = new StringTokenizer(br.readLine());
return Integer.parseInt(st.nextToken());
}
static int lowbit(int i)
{
return i & -i;
}
static void add(int index)
{
for(int i = index; i < M; i += lowbit(i))
tr[i]++;
}
static int pre_sum(int index)
{
int res = 0;
for(int i = index; i > 0; i -= lowbit(i)) res += tr[i];
return res;
}
static int quary(int index)
{
return pre_sum(index);
}
public static void main(String[] args) throws IOException
{
n = nextInt();
for(int i = 0; i < n; i++)
{
int x = nextInt() + 1;
int y = nextInt();
ans[quary(x)]++;
add(x);
}
for(int i = 0; i < n; i++) System.out.println(ans[i]);
}
}