아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

같은 노래

시간 제한2초메모리 제한512 MB

요약
주어진 재생 목록에서 곡을 일부 지워 인접한 두 곡이 같은 쌍의 수가 최대가 되도록 만들고, 그 목록 하나를 출력한다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 구현, 배열
정답자
아직 제출이 없습니다

문제

Masha의 음악 플레이어에는 여러 곡이 들어 있는 재생 목록이 있다. 그녀는 곡을 순서대로 듣는다. 재생 목록은 순환하지 않으며, 마지막 곡이 끝나면 플레이어가 꺼진다. Masha는 반복을 좋아하므로, 어떤 곡이 끝나고 바로 같은 곡이 시작될 때마다 행복해한다. 같은 곡 사이에 다른 곡이 끼어 있으면 Masha는 그것을 반복으로 여기지 않는다.

플레이어에는 곡을 재생 목록에 추가하거나 목록을 섞는 기능이 없다. 하지만 목록에서 곡을 삭제할 수는 있다. 재생 목록에서 곡을 몇 개 삭제해서 반복 횟수를 최대로 만드는 것이 여러분의 과제다. 아무것도 삭제하지 않거나 모든 곡을 삭제해도 된다.

입력

첫째 줄에는 정수 nn이 주어진다. 이는 재생 목록에 있는 곡의 수다 (1≤n≤501 \le n \le 50). 둘째 줄에는 nn개의 수가 공백으로 구분되어 주어지며, 이는 목록에 있는 곡들이다. 곡은 11부터 5050까지의 정수로 나타낸다.

출력

첫째 줄에는 편집한 재생 목록의 곡 수 mm과 그 안의 반복 횟수 kk를 공백으로 구분하여 출력한다. 둘째 줄에는 재생 목록을 mm개의 수로 공백으로 구분하여 출력한다.

가능한 답이 여러 개라면 아무거나 하나를 출력한다. 목록이 비어 있다면 둘째 줄을 출력해도 되고 출력하지 않아도 된다. 이 경우 둘째 줄은 빈 줄이다.

예제2

  1. 예제 1

    입력
    3
    1 2 1
    
    예상 출력
    2 1
    1 1
    
  2. 예제 2

    입력
    7
    2 1 2 1 3 2 5
    
    예상 출력
    4 2
    2 2 2 5