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

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

운명의 수레바퀴

면접 대비

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

요약
원형 바퀴의 n개 칸 값, 경계마다 감소하는 속도 k, 그리고 [a, b] 범위의 초기 각속도가 주어질 때, 양방향 회전 모두 고려해 화살표가 멈출 수 있는 칸 값의 최댓값을 구한다.
난이도

보통10점 중 5점

유형
수학, 구현, 완전 탐색, 배열
정답자
아직 제출이 없습니다

문제

오락 전문 텔레비전 채널에서 «운명의 수레바퀴»라는 쇼를 방송한다. 게임에서 참가자들은 여러 구역으로 나뉜 큰 바퀴를 돌린다. 이 바퀴의 각 구역에는 수가 적혀 있다. 바퀴가 멈춘 뒤, 특별한 화살표가 구역 하나를 가리킨다. 그 구역에 적힌 수가 참가자의 상금을 결정한다.

어린 참가자는 바퀴가 회전하는 동안 구역 사이에 있는 돌기에 화살표가 걸리면서 바퀴가 느려진다는 것을 알아냈다. 바퀴가 초당 vv도의 각속도로 회전하고, 화살표가 구역 XX에서 다음 구역으로 넘어가면서 돌기에 걸리면, 바퀴의 현재 각속도가 초당 kk도만큼 줄어든다. 이때 v≤kv \le k이면 바퀴는 장애물을 넘지 못하고 멈춘다. 이 경우 화살표는 구역 XX를 가리킨다.

어린 참가자는 바퀴를 돌리려고 한다. 바퀴의 구역 순서를 알고 있는 그는 바퀴가 멈춘 뒤 화살표가 가능한 한 큰 수를 가리키도록 초기 속도를 정하려고 한다. 바퀴는 어느 방향으로든 돌릴 수 있고, 초당 aa도에서 bb도 사이의 초기 각속도를 줄 수 있다.

구역에 적힌 수의 배치, 바퀴 회전의 최소 및 최대 초기 각속도, 구역 경계를 지날 때의 감속량이 주어졌을 때 최대 상금을 계산하는 프로그램을 작성해야 한다.

입력

입력 파일의 첫째 줄에는 정수 nn이 주어진다. 이는 바퀴의 구역 수이다 (3≤n≤1003 \le n \le 100).

입력 파일의 둘째 줄에는 nn개의 양의 정수가 주어지며, 각각은 1000을 넘지 않는다. 이는 바퀴의 구역에 적힌 수이다. 수는 구역이 시계 방향으로 이어지는 순서대로 주어진다. 처음에 화살표는 첫 번째 수를 가리킨다.

셋째 줄에는 세 정수 aa, bb, kk가 주어진다 (1≤a≤b≤1091 \le a \le b \le 10^9, 1≤k≤1091 \le k \le 10^9).

출력

출력 파일에는 최대 상금에 해당하는 정수 하나를 출력한다.

힌트

첫 번째 예제에서는 다음과 같은 경우가 가능하다. 바퀴에 초기 속도 3 또는 4를 주면 화살표가 구역 사이의 경계 하나를 넘어가고, 초기 속도 5를 주면 화살표가 구역 사이의 경계 2개를 넘어간다. 첫 번째 경우 바퀴를 한쪽으로 돌리면 상금이 2가 되고, 반대쪽으로 돌리면 5가 된다. 두 번째 경우 바퀴를 한쪽으로 돌리면 상금이 3이 되고, 다른 쪽으로 돌리면 4가 된다.

두 번째 예제에서는 초기 회전 속도가 초당 15도인 경우만 가능하다. 이때 바퀴를 돌리면 화살표가 구역 사이의 경계 일곱 개를 넘어간다. 그러면 한 방향으로 돌리면 상금이 4가 되고, 반대 방향으로 돌리면 3이 된다.

마지막으로 세 번째 예제에서 최적의 초기 회전 속도는 초당 2도이다. 이 경우 화살표가 구역 사이의 경계를 전혀 넘지 못하고, 상금은 5가 된다.

예제3

  1. 예제 1

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

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

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