이웃
한국어
Language
Contribute a translation- Time limit
- 2000 ms
- Memory limit
- 1024 MB
- Submissions
- 0
- Correct
- 0
- Solved by
- 0
- AC rate
- —
Statement
KOI 마을에는 일직선 형태의 도로가 있다. 이 도로 위에는 $N$개의 집이 있고, $1$번부터 $N$번까지 번호가 부여된 $N$명의 학생이 한 집에 한 명씩 살고 있다. $i$ ($1 \le i \le N$)번 학생이 살고 있는 집의 좌표는 $i$이다. 즉, $1$번 학생이 살고 있는 집의 좌표는 $1$, $2$번 학생이 살고 있는 집의 좌표는 $2$이다.
KOI 마을에는 학교가 두 곳 있다. 이를 각각 $1$번 학교와 $2$번 학교라고 하자. 각 학생은 두 학교 중 정확히 한 학교에 다닌다.
$i$번 학생과 $j$번 학생에 대해 ($i \ne j$), 아래의 조건 중 적어도 하나를 만족하면, 두 학생은 서로 이웃이라고 한다.
- 두 학생이 서로 같은 학교에 다니고, 두 학생의 집 사이의 거리가 $K_1$ 이하이다.
- 두 학생이 서로 다른 학교에 다니고, 두 학생의 집 사이의 거리가 $K_2$ 이하이다.
여기서, 서로 다른 두 집 사이의 거리란 두 집의 좌표 중 큰 값에서 작은 값을 뺀 값으로 정의한다. 예를 들어, $3$번 학생이 사는 집과 $5$번 학생이 사는 집 사이의 거리는 $5 - 3 = 2$이다.
각 학생에 대해, 그 학생과 서로 이웃인 학생의 수를 계산하는 프로그램을 작성하라. 자기 자신은 자신의 이웃이 아님에 유의하라.
Constraints
- 주어지는 모든 수는 정수이다.
- $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$
Subtasks
- (5점) $N = 2$
- (25점) $K_1 = K_2 = 1$
- (35점) $S_1 = S_2 = \cdots = S_N = 1$
- (35점) 추가 제약 조건 없음.
Input
첫 줄에 세 정수 $N$, $K_1$, $K_2$가 공백으로 구분되어 차례대로 주어진다.
그다음 줄에 $N$개의 정수 $S_1, S_2, \cdots, S_N$이 공백으로 구분되어 차례대로 주어진다. 여기서, $S_i$는 $i$번 학생이 다니는 학교의 번호를 나타낸다 ($1 \le i \le N$).
Output
첫 줄에 $N$개의 정수를 공백으로 구분하여 출력한다. 이 중 $i$번째 정수는 $i$번 학생과 서로 이웃인 학생의 수를 의미한다 ($1 \le i \le N$).
Examples
5 1 1 1 1 1 2 2
1 2 2 2 1
7 3 1 1 1 1 1 1 1 1
3 4 5 6 5 4 3
5 1 2 1 1 1 2 2
1 3 3 3 2
Tags
No tags yet