비밀번호
시간 제한1초메모리 제한1024 MB
1부터 M까지의 수 N개의 이진수 1비트 개수가 주어집니다. 인접한 두 수의 차가 1인 쌍이 가장 많은 수열을 찾고, 같으면 사전순으로 가장 앞선 수열을 출력합니다.
문제
우람이는 과 사이의 수 개로 이루어진 비밀번호를 가지고 있다. 우람이는 비밀번호를 기억하기 쉽도록 각 수를 2진법으로 나타냈을 때 1의 개수를 적어 두었다. 그 후 우람이는 비밀번호를 잊어버렸다.
우람이는 이웃한 두 수의 차이가 1인 수를 쓰는 것을 좋아한다. 각 수를 2진법으로 나타냈을 때 1의 개수가 주어졌을 때, 이웃한 수 중 차이가 1인 쌍이 가장 많은 비밀번호 수열을 찾아 우람이를 도와주자. 개수가 같은 수열이 여럿 있으면 사전순으로 가장 작은 수열을 출력한다.
입력
첫째 줄에 과 이 주어진다.
둘째 줄에 우람이 비밀번호의 각 수를 2진법으로 나타냈을 때 1의 개수인 길이 의 수열 이 공백을 사이에 두고 주어진다.
출력
첫째 줄에 차이가 1인 이웃한 수의 쌍의 개수의 최댓값을 출력한다.
둘째 줄에 문제의 조건을 만족하면서 차이가 1인 이웃한 수의 쌍이 가장 많은 수열을 출력한다. 그런 수열이 여럿이면 사전순으로 가장 작은 수열을 출력한다.
가능한 수열이 없으면 -1을 출력한다.
제한
힌트
수열 과 수열 에 대해 앞의 수열이 사전순으로 더 작다는 것은 다음과 같다.
어떤 가 존재해서 모든 에 대해 이고 이다.