거리두기
한국어
Language
Contribute a translation- Time limit
- 1000 ms
- Memory limit
- 1024 MB
- Submissions
- 0
- Correct
- 0
- Solved by
- 0
- AC rate
- —
Statement
$N$명의 학생이 수직선 위에 서려고 한다. 수직선에서는 수가 클수록 더 오른쪽에 있는 위치를 나타낸다.
학생들은 $1$번부터 $N$번까지 번호 순서대로 왼쪽부터 오른쪽으로 서며, 학생들이 서는 위치는 모두 정수이다.
$i$ $(1 \le i \le N)$번 학생이 서는 위치를 $B_i$라고 하자. 학생들이 서는 위치는 다음 조건을 만족해야 한다.
- 정수 $i$ $(1 \le i \le N)$에 대해, $i$번 학생은 위치 $A_i$보다 오른쪽에 설 수 없다. 즉, $B_i \le A_i$여야 한다.
- 번호가 연속한 두 학생은 $K$ 이상의 거리를 두어야 한다. 즉, 정수 $i$ $(1 \le i \le N - 1)$에 대해 $B_{i+1} - B_i \ge K$여야 한다.
$K = 0$인 경우에는 여러 학생이 같은 위치에 서도 된다.
학생들은 $1$번 학생의 위치 $B_1$을 가능한 한 크게 만들고 싶다.
조건을 만족하면서 학생들이 수직선 위에 서는 방법 $\left[ B_1, B_2, \cdots, B_N \right]$ 중 $B_1$의 값이 가장 큰 방법을 구하라. 그러한 방법이 여러 개라면 그중 아무거나 구하라.
조건을 만족하면서 학생들이 수직선 위에 서는 방법이 적어도 하나는 존재함을 증명할 수 있다.
Constraints
- 주어지는 모든 수는 정수이다.
- $1 \le N \le 100$
- $0 \le K \le 10$
- 정수 $i$ $(1 \le i \le N)$에 대하여 $1 \le A_i \le 100$
Subtasks
- (25점) 정수 $i$ $(1 \le i \le N - 1)$에 대해 $A_{i + 1} - A_i \ge K$이다.
- (35점) $K = 0$
- (30점) 조건을 만족하도록 학생들이 서는 방법 중 $0 \le B_1 \le 100$인 것이 존재한다.
- (10점) 추가 제약 조건 없음.
Input
첫 줄에 두 정수 $N$과 $K$가 공백으로 구분되어 차례대로 주어진다.
그다음 줄에 $N$개의 정수 $A_1, A_2, \cdots, A_N$이 공백으로 구분되어 차례대로 주어진다.
Output
첫 줄에 $N$개의 정수 $B_1, B_2, \cdots, B_N$을 공백으로 구분하여 출력한다. 이때, 학생들이 수직선 위에 서는 방법 $\left[ B_1, B_2, \cdots, B_N \right]$은 지문에서 주어진 모든 조건을 만족해야 하며, $B_1$의 값이 최대화되어야 한다.
가능한 출력이 여러 개라면 그중 아무거나 하나를 출력해도 정답으로 인정된다.
Examples
4 0 5 2 7 3
2 2 2 2
5 2 1 4 10 9 13
1 3 5 7 9
4 3 2 1 5 9
-2 1 4 7
Tags
No tags yet