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

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

죄수에게 주는 뇌물

면접 대비

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

요약
P개의 감방 중 지정된 Q명의 죄수를 풀어줄 때, 소문이 닿는 이웃 죄수에게 주는 뇌물의 총합이 최소가 되는 순서를 찾아 그 최솟값을 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 구간, 분할 정복
정답자
아직 제출이 없습니다

문제

감옥에 방 PP개가 한 줄로 늘어서 있다. 왼쪽 방부터 차례로 1,2,…,P1, 2, \dots, P번이다. 모든 방은 독방이고 각 방에 죄수 한 명이 수감되어 있다. 이웃한 두 방 사이에는 창문이 있어서 옆방 죄수와 이야기를 주고받는다.

어떤 방의 죄수를 석방하면 바로 옆방 죄수가 그 사실을 알고 난동을 부린다. 그래서 한 명을 석방할 때는 양옆 방의 죄수에게 각각 금화 한 장을 뇌물로 줘야 한다. 소식은 창문을 거쳐 계속 옆으로 전해지므로, 소식이 닿는 죄수 전원에게 금화를 줘야 한다. 이미 비어 있는 방에는 소식을 전할 죄수가 없으니 소식은 그 방에서 끊긴다.

오늘 A1,A2,…,AQA_1, A_2, \dots, A_Q번 방에 있는 죄수 QQ명을 석방한다. 석방하는 순서에 따라 드는 금화가 달라진다. 금화를 가장 적게 쓰는 순서를 찾아 그때 필요한 금화의 개수를 구하자.

입력

첫째 줄에 정수 PP와 QQ가 공백으로 구분되어 주어진다. (1≤P≤10 0001 \le P \le 10\,000, 1≤Q≤1001 \le Q \le 100, Q≤PQ \le P)

둘째 줄에 정수 QQ개 A1,A2,…,AQA_1, A_2, \dots, A_Q가 공백으로 구분되어 주어진다. 각 수는 석방할 죄수의 방 번호이고, 같은 번호가 두 번 주어지는 경우는 없다. (1≤Ai≤P1 \le A_i \le P)

출력

죄수 QQ명을 모두 석방할 때 드는 금화의 최소 개수를 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    20 3
    3 14 6
    
    예상 출력
    35