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

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

눈덩이 굴리기

시간 제한1초메모리 제한1024 MB

요약
크기 1, 위치 0에서 시작해 매초 위치를 1 늘리며 a[i+1]을 더하거나, 위치를 2 늘리며 크기를 절반으로 줄인 뒤 a[i+2]를 더한다. M초 안에 도달할 수 있는 최대 크기를 구한다.
난이도

보통10점 중 5점

유형
동적 계획법, 완전 탐색
정답자
아직 제출이 없습니다

문제

눈송이가 많이 내리는 숙명여대 앞마당에서 눈사람 만들기 대회를 연다. 앞마당의 길이는 NN이고 위치 11부터 위치 NN까지만 눈이 쌓여 있다. 위치 ii에 눈이 aia_i만큼 쌓여 있다. 대회 규칙은 앞마당에서 MM초 동안 눈덩이를 굴려 눈사람을 만드는 것이다. 눈덩이의 시작 크기는 11이고 시작 위치는 00이다.

가장 큰 눈사람을 만들고 싶은 수수는 눈덩이를 굴리는 법을 연구했다. 눈덩이를 굴리거나 던질 때 1초가 소모된다.

  1. 눈덩이를 현재 위치에서 +1칸으로 굴린다. 현재 위치를 ii라고 하면 눈덩이의 크기는 ai+1a_{i+1}만큼 늘어난다.
  2. 눈덩이를 현재 위치에서 +2칸으로 던진다. 눈덩이가 착지하며 충격을 받아 크기가 원래 크기의 반으로 줄어들고, 현재 위치를 ii라고 하면 눈덩이의 크기는 ai+2a_{i+2}만큼 늘어난다. 이때 소수점은 절사한다. 눈덩이를 던져 크기가 00이 되어도 눈덩이는 사라지지 않는다.

눈덩이가 앞마당의 끝에 도달하면 남은 시간과 관계없이 눈덩이 굴리기는 끝난다. 대회 시간 내에 가장 크게 만들 수 있는 눈덩이의 크기를 구하는 프로그램을 작성해 보자.

입력

첫째 줄에 공백을 기준으로 앞마당의 길이 NN (1≤N≤1001 \leq N \leq 100), 대회의 시간 MM (1≤M≤101 \leq M \leq 10)이 주어진다.

둘째 줄에 길이가 NN인 수열 aa가 주어진다. (1≤ai≤1 000 0001 \leq a_i \leq 1\,000\,000)

출력

첫째 줄에 대회 시간 내에 가장 크게 만들 수 있는 눈덩이의 크기를 출력한다.

예제1

  1. 예제 1

    입력
    10 5
    1 3 4 5 6 7 8 10 12 14
    
    예상 출력
    28