해결한 사람
0
명
정답률
0.00
%
시간 제한
1000
ms
메모리 제한
245
MB
양의 정수 수열 a1, a2, ..., an이 주어진다.
가능한 동안 다음 연산을 수행한다. 연속한 같은 원소의 쌍을 찾는다. 그러한 쌍이 하나보다 많다면 가장 왼쪽에 있는 쌍(원소의 인덱스가 가장 작은 쌍)을 찾는다. 두 정수가 x와 같다면 둘을 삭제하고 그 자리에 하나의 정수 x + 1을 삽입한다. 이와 같이 각 단계에서 수열의 원소 수가 1만큼 감소한다.
연속한 같은 원소의 쌍이 없으면 연산 수행을 중단한다.
예를 들어 초기 수열이 라면, 첫 번째 연산 후에는 을 얻고, 두 번째 연산 후에는 , 세 번째 연산 후에는 을 얻으며, 마지막으로 네 번째 연산 후에는 을 얻는다. 그 후에는 수열에 연속한 같은 원소가 남아 있지 않으므로 과정을 중단한다.
연산 수행을 중단한 뒤의 최종 수열을 구한다.
첫 번째 줄에는 수열의 원소 수를 나타내는 하나의 정수 n (2 ≤ n ≤ 2·105)이 주어진다.
두 번째 줄에는 정수 수열 a1, a2, ..., an (1 ≤ ai ≤ 109)이 주어진다.
첫 번째 줄에 연산 수행을 중단한 뒤 수열의 원소 수를 나타내는 하나의 정수 k를 출력한다.
두 번째 줄에 연산 수행을 중단한 뒤의 수열을 나타내는 k개의 정수를 출력한다.
7
4 10 22 11 12 5 6
7
4 10 22 11 12 5 6
6
5 2 1 1 2 2
2
5 4
4
1000000000 1000000000 1000000000 1000000000
1
1000000002
첫 번째 예제는 문제 설명에 기술되어 있다.
두 번째 예제에서 초기 수열은 이다. 첫 번째 연산 후 수열은 과 같다. 두 번째 연산 후 수열은 이다. 세 번째 연산 후 수열은 이다.
세 번째 예제에서는 처음부터 연속한 같은 두 원소가 없으므로 수열이 변하지 않는다.