해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
양의 정수로 이루어진 배열이 주어진다. 같은 원소가 적어도 두 개 있는 동안 다음 연산을 수행한다. 배열에서 2번 이상 등장하는 값 중 가장 작은 값 x를 고른다. 이 배열에서 x가 처음 등장하는 두 위치(가장 왼쪽의 두 위치)를 택한다. 이 둘 중 왼쪽에 있는 원소를 제거하고, 오른쪽에 있는 원소를 이 두 값의 합(즉, 2 ⋅ x)으로 바꾼다.
설명한 연산을 모두 수행한 뒤 배열의 모습을 구한다.
예를 들어, 주어진 배열이 와 같다고 하자. 배열은 다음과 같이 바뀐다: →→→.
주어진 배열이 와 같다면 다음과 같이 바뀐다: →→→.
첫 번째 줄에는 배열의 원소 개수를 나타내는 하나의 정수 n (2 ≤ n ≤ 150 000)이 주어진다.
두 번째 줄에는 배열의 원소인 n개의 원소로 이루어진 수열 , , ..., (1 ≤ ≤ )이 주어진다.
첫 번째 줄에 모든 연산을 수행한 뒤 배열에 남은 원소의 개수인 정수 k를 출력한다. 두 번째 줄에 모든 연산을 수행한 뒤 배열의 원소를 나타내는 k개의 정수를 출력한다.
7
3 4 1 2 2 1 1
4
3 8 2 1 5
10 40 20 50 30
5
10 40 20 50 30 5
1 1 3 1 1
2
3 4 앞의 두 예제는 문제 설명에서 다루었다.
세 번째 예제에서는 주어진 배열의 모든 정수가 서로 다르므로 배열은 바뀌지 않는다.