페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#5927

인형 1s 1024MB

문제

정올 유치원에서는 물체의 크다 작다 개념을 가르치고 있다. 정올 유치원의 스타 서현샘은 이 개념을 가르치기 위해 인형을 활용하기로 했다.

모든 인형은 안이 비어있는 구조로 되어 있어서 큰 인형 안에 작은 인형을 집어 넣을 수 있으며, 모든 인형은 각각 고유의 크기를 가지고 있다.

다음과 같은 조건을 만족하면 크기 x인 인형은 크기 y인 인형의 안에 넣을 수 있다.

y-x \ge 2

다시 말해, 크기 차이가 2 이상이면 작은 인형 위에 큰 인형을 포갤 수 있다는 것이다.

서현샘은 여러 인형들 중 몇 개를 선택한 후 가장 작은 인형을 두 번째로 작은 인형에 넣는 방식으로 하나의 인형으로 보이도록 하고 싶다.

이렇게 만든 "인형의 무게"은 그 인형을 만드는데 사용된 인형의 수로 정의한다.

n일 동안 서현샘은 인형을 구매하려고 한다. i일차에 (1 \le i \le n) 구매하는 인형의 크기는 a[i]이며 인형을 구매한 다음 위 방법으로 포개어 가장 무거운 "인형의 무게"를 구하려고 한다.

정올 유치원의 스타 서현샘을 도와 인형을 구매할 때마다 만들 수 있는 가장 무거운 "인형의 무게"를 구하라.

[제약 조건]

1 \le n \le 100,000

1 \le a[i] \le 500,000


입력

첫 줄에 정수 n이 주어진다.

다음 n개의 정수 a[1],a[2],\cdots,a[n]이 공백을 구분으로 주어진다.


출력

n개의 정수를 한 줄로 공백을 구분으로 출력한다. i번째 정수는 그 날에 만들 수 있는 가장 무거운 "인형의 무게"이다.


부분문제

번호 점수 조건
#123점

n \le 200

#214점

모든 i에 대해 a[i]가 2의 배수가 아니다. (1 \le i \le n)

#327점

모든 i에 대해 a[i]가 4의 배수가 아니다. (1 \le i \le n)

#436점

추가 제약 조건 없음.


예제 #1

5
1 2 3 4 5
1 1 2 2 3

1일차: 서현샘은 오직 무게 1의 인형만 만들 수 있다.

2일차: 서현샘은 크기 1의 인형 또는 크기 2의 인형으로 무게 1의 인형을 만들 수 있다.

3일차: 서현샘은 크기 1의 인형을 크기 3의 인형 안으로 넣어 무게 2의 인형을 만들 수 있다.

4일차: 서현샘은 크기 1의 인형을 크기 3의 인형 안으로 넣어 크기 1의 인형을 크기 4의 인형 안으로 넣거나 크기 2의 인형을 크기 4의 인형 안으로 넣어 무게 2의 인형을 만들 수 있다.

5일차: 서현샘은 크기 1의 인형, 크기 3의 인형, 크기 5의 인형을 포개어 무게 3의 인형을 만들 수 있다.


예제 #2

5
2 4 6 8 10
1 2 3 4 5

인접한 모든 인형들 간의 차이가 2이므로 매일 포갤 수 있다.


예제 #3

5
3 3 1 3 2
1 1 2 2 2

2일차까지 크기 3 인형 하나가 가장 큰 무게다.

3일차에 크기 1 인형을 크기 3 인형 안에 넣을 수 있다.

5일차에 크기 3 인형과 차이가 1이므로 크기 2 인형을 넣을 수 없다.


출처

NOI 2023 Qualification 3번
로그인해야 코드를 작성할 수 있어요.