CF1075B Taxi drivers and Lyft

题目描述

Palo Alto 是一座特殊的城市,因为它是一条无限的坐标线。这座城市还以 Lyft Level 5 办公室而闻名。 Lyft 如今非常受欢迎,城市中所有 $m$ 位出租车司机每天都使用它来运送城市中剩余的 $n$ 位乘客。 Palo Alto 的每位居民(包括出租车司机)都住在唯一的位置(不存在两位居民住在同一坐标的情况)。 Lyft 系统非常智能:当乘客叫车时,他的请求不会发送给所有出租车司机,而是只发送给距离他最近的那一位。如果有多位司机距离相同,则选择坐标较小的那位司机。 但有一天早晨,出租车司机们产生了疑问:如果他们是当天第一个被叫车的司机,那么会有多少乘客会呼叫指定的出租车司机?换句话说,你需要为每一位出租车司机 $i$ 计算 $a_i$ —— 即当所有司机和乘客都在家时,会有多少乘客会呼叫第 $i$ 位出租车司机? 出租车司机不能接送自己,也不能接送其他出租车司机。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 10^5$),分别表示乘客数和出租车司机数。 第二行包含 $n + m$ 个整数 $x_1, x_2, \ldots, x_{n+m}$($1 \le x_1 < x_2 < \ldots < x_{n+m} \le 10^9$),其中 $x_i$ 表示第 $i$ 位居民的坐标。 第三行包含 $n + m$ 个整数 $t_1, t_2, \ldots, t_{n+m}$($0 \le t_i \le 1$)。如果 $t_i = 1$,则第 $i$ 位居民是出租车司机,否则是乘客。 保证 $t_i = 1$ 的 $i$ 的个数恰好为 $m$。

输出格式

输出 $m$ 个整数 $a_1, a_2, \ldots, a_m$,其中 $a_i$ 表示第 $i$ 位出租车司机的答案。如果某位出租车司机在所有司机中按坐标从小到大排序后排在第 $i$ 位,则他为第 $i$ 位司机(参见样例以便理解)。

说明/提示

在第一个样例中,只有一位出租车司机,因此所有 $n$ 位乘客的订单都会分配给他。 在第二个样例中,第一位出租车司机住在坐标为 $2$ 的位置,第二位住在坐标为 $6$ 的位置。显然,住在坐标 $3$ 的乘客距离第一位司机最近,住在坐标 $5$ 的乘客距离第二位司机最近。住在坐标 $4$ 的乘客距离两位司机距离相同,但由于第一位司机的坐标更小,因此该乘客的订单会分配给第一位司机。 在第三个样例中,只有一位乘客,他距离第四位司机最近。 由 ChatGPT 4.1 翻译