P17134 [KOI 2026 #1] 邻居

题目描述

KOI 村中有一条笔直的道路。道路上共有 $N$ 座房屋,编号为 $1$ 到 $N$ 的 $N$ 名学生分别居住在这些房屋中,每座房屋恰好住有一名学生。对于整数 $i$($1 \le i \le N$),学生 $i$ 所居住房屋的坐标为 $i$。也就是说,学生 $1$ 所居住房屋的坐标为 $1$,学生 $N$ 所居住房屋的坐标为 $N$。 KOI 村中有两所学校,分别称为学校 $1$ 和学校 $2$。每名学生恰好就读于这两所学校中的一所。 对于学生 $i$ 和学生 $j$($i \ne j$),如果满足下列条件中的至少一个,则称这两名学生互为邻居: - 两名学生就读于同一所学校,并且两人所居住房屋之间的距离不超过 $K_1$。 - 两名学生就读于不同的学校,并且两人所居住房屋之间的距离不超过 $K_2$。 这里,两座不同房屋之间的距离定义为两座房屋坐标中的较大值减去较小值。例如,学生 $3$ 所居住的房屋与学生 $5$ 所居住的房屋之间的距离为 $5-3=2$。 请编写一个程序,对每名学生计算与其互为邻居的学生人数。请注意,学生自己不算作自己的邻居。

输入格式

第一行输入三个整数 $N$、$K_1$、$K_2$,整数之间以空格分隔。 第二行输入 $N$ 个整数 $S_1,S_2,\ldots,S_N$,整数之间以空格分隔。其中,$S_i$ 表示学生 $i$ 所就读学校的编号($1 \le i \le N$)。

输出格式

第一行输出 $N$ 个整数,整数之间以空格分隔。其中,第 $i$ 个整数表示与学生 $i$ 互为邻居的学生人数($1 \le i \le N$)。

说明/提示

### 限制条件 - 输入中给出的所有数均为整数。 - $2 \le N \le 3\,000$。 - $1 \le K_1,K_2 \le N-1$。 - 对于每个整数 $i$($1 \le i \le N$),均有 $1 \le S_i \le 2$。 ### 子任务 | 子任务 | 分值 | 附加限制 | |---|---:|---| | $1$ | $5$ 分 | $N=2$。 | | $2$ | $25$ 分 | $K_1=K_2=1$。 | | $3$ | $35$ 分 | $S_1=S_2=\cdots=S_N=1$。 | | $4$ | $35$ 分 | 无附加限制。 | 翻译由 ChatGPT-5.6 完成