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

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

종이띠 접기

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

요약
길이 n인 띠를 주어진 k개의 접는 위치를 순서대로 따라 접은 뒤 최종 길이를 구한다. n은 최대 18자리 수다.
난이도

보통10점 중 5점

유형
구현, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

폭이 11, 길이가 nn, 두께는 무시할 수 있는 종이띠가 단위 정사각형들로 나뉘어 있다. 왼쪽 끝에서부터 시작하여, 그림처럼(그림은 n=7n = 7인 경우) 접을 수 있는 각 세로 경계선에 00부터 nn까지의 정수를 차례로 이름 붙인다. 종이띠는 오직 이 경계선을 따라서만 접을 수 있으며, 한 번 접으면 겹쳐진 두 부분은 서로 붙어 다시 펴지지 않는다.

접고 나면 이름이 붙은 몇몇 경계선이 서로 정확히 포개져 하나의 위치를 이루고, 그 위치는 여러 개의 이름을 가지게 된다. 예를 들어 n=7n = 7인 띠를 경계선 33에서 접으면 11번과 55번이 같은 위치에 놓여, 이후로는 "11"과 "55"가 같은 경계선을 가리킨다. 이어서 경계선 22(같은 위치가 된 44라고 해도 된다)에서 다시 접으면 {1,3,5}\{1, 3, 5\}처럼 이름이 세 개인 위치가 생긴다.

접는 위치가 현재 띠의 양 끝 중 하나에 정확히 놓여 있다면, 그 접기는 이름 배치도 길이도 바꾸지 않는다. 이런 접기는 금지된 것은 아니며, 그저 아무 변화도 없는 빈 접기일 뿐이다.

따라서 각각 00부터 nn 사이의 정수 kk개로 이루어진 수열은 하나의 접기 순서를 정의한다. 이 kk번의 접기를 순서대로 모두 수행한 뒤 종이띠의 길이를 구하라.

입력

입력은 표준 입력으로 주어진다.

  • 첫째 줄: 공백으로 구분된 두 양의 정수 nn과 kk.
  • 둘째 줄: 공백으로 구분된 음이 아닌 정수 kk개. 각 값은 nn 이하이며, 접을 경계선을 접는 순서대로 나타낸다.

출력

kk번의 접기를 순서대로 모두 수행한 뒤 남은 종이띠의 길이를 정수 하나로 한 줄에 출력한다.

제한

  • nn은 양의 정수이며, 십진수로 나타냈을 때 자릿수가 최대 1818자리이다.
  • 1≤k≤100001 \le k \le 10000.
  • 각 접기 값은 [0,n][0, n] 범위의 정수이다.

힌트

두 번째 테스트 케이스(n=9n = 9, 접는 순서 5 9 2 8 35\ 9\ 2\ 8\ 3)에서 각 위치와 그 이름들이 어떻게 변하는지 살펴보자. 괄호로 묶인 이름들은 같은 위치에 포개진 것이다.

시작: {0 1 2 3 4 5 6 7 8 9}\{0\ 1\ 2\ 3\ 4\ 5\ 6\ 7\ 8\ 9\}

  • 55번 접기: {0 (1;9) (2;8) (3;7) (4;6) 5}\{0\ (1;9)\ (2;8)\ (3;7)\ (4;6)\ 5\}
  • 99번 접기: {(1;9) (0;2;8) (3;7) (4;6) 5}\{(1;9)\ (0;2;8)\ (3;7)\ (4;6)\ 5\}
  • 22번 접기: {(0;2;8) (1;3;7;9) (4;6) 5}\{(0;2;8)\ (1;3;7;9)\ (4;6)\ 5\}
  • 88번 접기: {(0;2;8) (1;3;7;9) (4;6) 5}\{(0;2;8)\ (1;3;7;9)\ (4;6)\ 5\} (88번 경계선이 이미 끝에 있으므로 빈 접기)
  • 33번 접기: {(1;3;7;9) (0;2;4;6;8) 5}\{(1;3;7;9)\ (0;2;4;6;8)\ 5\}

위치가 세 개 남았으므로 최종 길이는 22이다.

예제2

  1. 예제 1

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

    입력
    9 5
    5 9 2 8 3
    
    예상 출력
    2