만드는 중입니다

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

기차에서 졸다

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

요약
1번과 n번 정류장 사이를 왕복하는 기차에서 안토니오가 a번에서 b번까지 가는 동안 기차가 방향을 바꾸는 최소 횟수를 구합니다.
난이도

보통10점 중 6점

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

문제

안토니오는 Line Town을 관광하고 있다. 관광의 일부로 유명한 Line Train을 탄다. 이 기차에는 1번부터 nn번까지 번호가 붙은 nn개의 정류장이 있다. 기차는 1번 정류장에서 출발해 번호가 커지는 순서로 nn번 정류장까지 간다. 거기서 방향을 바꿔 번호가 작아지는 순서로 1번 정류장까지 가고, 다시 방향을 바꿔 같은 여정을 반복한다.

기차가 1번 또는 nn번 정류장에 도착하면 내리려는 승객이 모두 내린다. 그다음 방향을 바꾸고, 다음 정류장으로 출발하기 전에 새 승객을 태운다.

안토니오는 aa번 정류장에서 bb번 정류장으로 간다. 그는 매우 졸려서 탈 때 기차의 진행 방향을 확인하지 않는다. 그래서 반대 방향으로 가는 기차에 탈 수도 있다. 기차에 타자마자 잠이 들고, 여행 중 tt번 깨어난다. 깰 때마다 기차가 sis_i번 정류장과 si+1s_i+1번 정류장 사이에 있다는 것을 알아챈다. 기차가 어느 방향으로 가는지는 알 수 없다. 아직 목적지가 아니므로 곧바로 다시 잠든다.

tt번째로 깬 뒤 안토니오는 여행이 끝날 때까지 깨어 있기로 한다. 기차가 다음으로 bb번 정류장에 설 때까지 기차에 머물렀다가 그곳에서 내린다.

안토니오가 기차에 타고 있는 동안 기차가 방향을 바꾼 횟수의 최솟값을 구하라.

입력

첫째 줄에 네 정수 nn (2≤n≤1092 \le n \le 10^9), tt (1≤t≤1051 \le t \le 10^5), aa, bb (1≤a,b≤n1 \le a, b \le n, a≠ba \neq b)가 주어진다.

둘째 줄에 tt개의 정수가 주어진다. ii번째 정수 sis_i (1≤si<n1 \le s_i < n)는 안토니오가 ii번째로 깼을 때 기차가 sis_i번 정류장과 si+1s_i+1번 정류장 사이에 있었다는 뜻이다.

출력

안토니오가 기차에 타고 있는 동안 기차가 방향을 바꾼 횟수의 최솟값을 출력한다.

예제2

  1. 예제 1

    입력
    10 1 5 3
    4
    
    예상 출력
    0
    
  2. 예제 2

    입력
    10 2 5 3
    5 4
    
    예상 출력
    1