눈덩이 굴리기
시간 제한1초메모리 제한1024 MB
크기 1, 위치 0에서 시작해 매초 위치를 1 늘리며 a[i+1]을 더하거나, 위치를 2 늘리며 크기를 절반으로 줄인 뒤 a[i+2]를 더한다. M초 안에 도달할 수 있는 최대 크기를 구한다.
문제
눈송이가 많이 내리는 숙명여대 앞마당에서 눈사람 만들기 대회를 연다. 앞마당의 길이는 이고 위치 부터 위치 까지만 눈이 쌓여 있다. 위치 에 눈이 만큼 쌓여 있다. 대회 규칙은 앞마당에서 초 동안 눈덩이를 굴려 눈사람을 만드는 것이다. 눈덩이의 시작 크기는 이고 시작 위치는 이다.
가장 큰 눈사람을 만들고 싶은 수수는 눈덩이를 굴리는 법을 연구했다. 눈덩이를 굴리거나 던질 때 1초가 소모된다.
- 눈덩이를 현재 위치에서 +1칸으로 굴린다. 현재 위치를 라고 하면 눈덩이의 크기는 만큼 늘어난다.
- 눈덩이를 현재 위치에서 +2칸으로 던진다. 눈덩이가 착지하며 충격을 받아 크기가 원래 크기의 반으로 줄어들고, 현재 위치를 라고 하면 눈덩이의 크기는 만큼 늘어난다. 이때 소수점은 절사한다. 눈덩이를 던져 크기가 이 되어도 눈덩이는 사라지지 않는다.
눈덩이가 앞마당의 끝에 도달하면 남은 시간과 관계없이 눈덩이 굴리기는 끝난다. 대회 시간 내에 가장 크게 만들 수 있는 눈덩이의 크기를 구하는 프로그램을 작성해 보자.
입력
첫째 줄에 공백을 기준으로 앞마당의 길이 (), 대회의 시간 ()이 주어진다.
둘째 줄에 길이가 인 수열 가 주어진다. ()
출력
첫째 줄에 대회 시간 내에 가장 크게 만들 수 있는 눈덩이의 크기를 출력한다.