만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

긴 이진 수열

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

요약
길이가 최대 10억인 이진 문자열에서 1의 위치 m개(최대 1000개)가 주어질 때 서로 다른 연속 부분 문자열의 개수를 구합니다.
난이도

어려움10점 중 9점

유형
문자열 매칭, 문자열, 구현
정답자
아직 제출이 없습니다

문제

보보에게 길이가 nn인 아주 긴 이진 수열 ss가 있다. x1,x2,…,xmx_1, x_2, \dots, x_m으로 주어진 mm개의 위치를 제외한 모든 위치의 값은 00이고, 그 위치들의 값은 모두 11이다. 즉 sx1=sx2=⋯=sxm=1s_{x_1} = s_{x_2} = \dots = s_{x_m} = 1이다.

보보는 ss에 나타나는 서로 다른 연속 부분 문자열의 개수를 알고 싶다.

입력

첫째 줄에 두 정수 nn, mm이 주어진다 (1≤n≤1091 \leq n \leq 10^9, 1≤m≤min⁡{n,1000}1 \leq m \leq \min\{n, 1000\}).

둘째 줄에 mm개의 정수 x1,x2,…,xmx_1, x_2, \dots, x_m이 주어진다 (1≤x1<x2<⋯<xm≤n1 \leq x_1 < x_2 < \dots < x_m \leq n).

출력

서로 다른 연속 부분 문자열의 개수를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    3 2
    1 3
    
    예상 출력
    5
    
  2. 예제 2

    입력
    1000000000 1
    1
    
    예상 출력
    1999999999