SSHS 프로토콜
시간 제한2초메모리 제한1024 MB
이진 문자열을 짝수 길이의 연속된 조각으로 나눌 때, 각 조각의 앞뒤 절반을 이진수로 읽은 값의 곱을 모두 더한 합의 최솟값을 구합니다.
문제
SSHS 프로토콜은 0과 1로만 이루어진 짝수 길이의 데이터를 전송할 수 있는 프로토콜이다. SSHS 프로토콜로 데이터를 전송하면 다음 방식으로 비용이 청구된다.
- 전송할 데이터를 0과 1로 이루어진 길이 의 수열 라고 하자. (단, )
- 청구 비용은 이다.
- 즉, 를 절반으로 나눈 뒤 각 부분을 이진법 수로 보았을 때, 두 값의 곱만큼 비용이 청구된다.
데이터가 길수록 비용이 기하급수적으로 늘어난다. 그래서 데이터를 나눠서 보내는 경우가 많다. 데이터를 나눠 보내면 전체 비용은 나뉜 조각들의 비용의 합이다. 길이 의 데이터 가 주어졌을 때, 전체 비용의 최솟값을 구하여라.
정확한 정의는 다음과 같다.
- 데이터 의 청구 비용을 라고 정의한다.
- 0과 1로 이루어진 길이 의 데이터 가 주어진다. (단, 은 짝수)
- 을 만족하고, 모든 정수 ()에 대해 가 짝수가 되도록 정수 를 고른다. (단, 는 0 이상의 정수)
- 이때 전체 비용은 이다. (은 의 부분수열 을 뜻한다.)
- 전체 비용 의 최솟값을 구하여라.
데이터를 나누지 않고 그대로 보내는 것도 가능하다. 즉, 의 비용으로 를 전송할 수 있다.
입력
첫 번째 줄에 데이터의 길이 이 주어진다.
두 번째 줄에 0과 1로 이루어진 길이 의 데이터 가 공백 없이 주어진다.
출력
를 보낼 때 전체 비용의 최솟값을 출력한다.
제한
- 은 짝수