징검다리의 징검다리

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

요약
호수마다 원형으로 놓인 돌의 개수가 주어질 때, 서로 다른 돌을 정확히 K개 밟고 E번째 호수에 도착할 수 있는지 판정한다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 수학, 구현
정답자
아직 제출이 없습니다

문제

NN개의 호수가 일렬로 늘어서 있다. 각 호수는 왼쪽에서부터 11번에서 NN번까지 번호가 매겨져 있으며, 각 호수에는 돌들이 원형으로 배치되어 있다. ii번째 호수에는 징검다리를 이루는 돌이 A_iA\_i개 있으며, 각 돌에는 11번부터 A_iA\_i번까지 번호가 매겨져 있다.

용모는 SS번째 호수의 11번 돌 위에 서 있으며, 다음과 같은 규칙으로 이동한다.

  • 현재 jj번 돌 위에 있다면 같은 호수의 j+1j+1번 돌로 이동한다. 단, 현재 A_iA\_i번 돌 위에 있다면 11번 돌로 이동한다.
  • 현재 jj번 돌 위에 있다면 같은 호수의 j−1j-1번 돌로 이동한다. 단, 현재 11번 돌 위에 있다면 A_iA\_i번 돌로 이동한다.
  • 현재 ii번째 호수의 돌 위에 있다면 i−1i-1번 또는 i+1i+1번 호수의 임의의 돌로 이동한다. 단, i−1i-1번 호수 또는 i+1i+1번 호수가 존재하지 않는다면 해당 방향으로는 이동할 수 없다.
  • 한번 밟은 돌은 다시 밟을 수 없다.

용모가 EE번째 호수의 임의의 돌에 도착할 때까지, 시작 돌과 끝 돌을 포함하여 정확히 KK개의 돌을 밟을 수 있는지 판단하는 프로그램을 작성하시오.

입력

첫 번째 줄에 호수의 개수를 나타내는 정수 NN과 시작 호수와 끝 호수의 번호를 나타내는 정수 S,ES,E가 주어진다.

두 번째 줄에 각 호수의 징검다리를 이루는 돌의 개수 A_1,A_2,⋯ ,A_NA\_1,A\_2,\cdots,A\_N이 공백으로 구분되어 주어진다.

세 번째 줄에 용모가 밟아야 하는 서로 다른 돌의 개수 KK가 주어진다.

출력

용모가 정확히 KK개의 돌을 밟은 후 EE번째 호수의 임의의 돌에 도착할 수 있으면 1, 그렇지 않으면 0을 출력한다.

제한

  • 2≤N≤200,0002\le N\le 200\\, 000
  • 1≤S,E≤N1\le S,E\le N, S≠ES\neq E
  • 1≤A_i≤1,0001\le A\_i\le 1\\, 000
  • 2≤K≤1092\le K\le 10^9

예제2

  1. 예제 1

    입력
    7 6 3
    4 1 7 2 2 4 9
    5
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5 2 4
    2 3 2 6 4
    2
    
    예상 출력
    0