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

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

점프하는 로봇

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

요약
원형 경로에서 점프할 때마다 민첩성이 1씩 늘어날 때, 한 바퀴를 완주하는 최소 초기 민첩성과 시작 플랫폼 번호를 구합니다.
난이도

보통10점 중 6점

유형
배열, 슬라이딩 윈도우
정답자
아직 제출이 없습니다

문제

Flatland Dynamics사는 점프하는 로봇을 개발한다. 시험에는 번호가 1부터 nn까지 붙은 특수 플랫폼 nn개로 이루어진 원형 코스를 쓴다. 플랫폼 ii와 i+1i+1 사이의 거리는 did_i이고, 플랫폼 nn과 1 사이의 거리는 dnd_n이다.

로봇에는 AI가 들어 있어서 시험 중에 더 멀리 뛰도록 학습한다. 로봇은 어느 순간이든 정수 aa로 나타내는 민첩성을 가진다. a≥dia \ge d_i이면 로봇은 플랫폼 ii에서 i+1i+1로 뛸 수 있다. 마찬가지로 a≥dna \ge d_n이면 플랫폼 nn에서 1로 뛸 수 있다. 한 번 뛸 때마다 로봇의 민첩성은 1 증가한다.

개발자는 시작 플랫폼을 하나 고른다. 로봇이 플랫폼을 차례로 nn번 뛰어 한 바퀴를 돌고 시작 플랫폼으로 돌아오면 실험은 성공이다.

개발자는 실험을 성공시킬 수 있는 초기 민첩성의 최솟값과, 로봇을 어느 플랫폼에서 출발시켜야 하는지 알고 싶어 한다.

입력

첫째 줄에 nn (3≤n≤1073 \le n \le 10^7)이 주어진다.

둘째 줄에는 거리 배열이 주어지는 형식을 나타내는 정수 ff가 주어진다.

f=1f = 1이면 셋째 줄에 정수 d1,d2,…,dnd_1, d_2, \ldots, d_n (1≤di≤1091 \le d_i \le 10^9) nn개가 주어진다.

f=2f = 2이면 셋째 줄에 정수 mm (2≤m≤min⁡(n,105)2 \le m \le \min(n, 10^5))과 정수 xx, yy, zz (0≤x,y,z≤1090 \le x, y, z \le 10^9)가 주어진다. 넷째 줄에는 정수 c1,c2,…,cmc_1, c_2, \ldots, c_m (1≤ci≤1091 \le c_i \le 10^9) mm개가 주어진다. 거리는 다음과 같이 계산한다.

1≤i≤m1 \le i \le m이면 di=cid_i = c_i이다.

m+1≤i≤nm + 1 \le i \le n이면 di=((x⋅di−2+y⋅di−1+z) mod 109)+1d_i = ((x \cdot d_{i-2} + y \cdot d_{i-1} + z) \bmod 10^9) + 1이다. 여기서  mod \bmod는 나머지 연산이며, C++, Java, Python에서는 %로 쓴다.

출력

정수 두 개를 출력한다. 첫 번째는 최소 초기 민첩성 aa이다. 두 번째는 그 민첩성에서 실험에 성공하는 시작 플랫폼의 번호이다.

성공하는 시작 플랫폼이 여럿이면 그중 아무 번호나 출력해도 된다.

힌트

두 번째 예제의 거리 배열은 [1,2,3,4,5,18,45,112,273,662][1, 2, 3, 4, 5, 18, 45, 112, 273, 662]이다. d6d_6부터 d10d_{10}은 다음과 같이 계산된다.

d6=((1⋅d4+2⋅d5+3) mod 109)+1=((1⋅4+2⋅5+3) mod 109)+1=18d_6 = ((1 \cdot d_4 + 2 \cdot d_5 + 3) \bmod 10^9) + 1 = ((1 \cdot 4 + 2 \cdot 5 + 3) \bmod 10^9) + 1 = 18

d7=((1⋅d5+2⋅d6+3) mod 109)+1=((1⋅5+2⋅18+3) mod 109)+1=45d_7 = ((1 \cdot d_5 + 2 \cdot d_6 + 3) \bmod 10^9) + 1 = ((1 \cdot 5 + 2 \cdot 18 + 3) \bmod 10^9) + 1 = 45

d8=((1⋅d6+2⋅d7+3) mod 109)+1=((1⋅18+2⋅45+3) mod 109)+1=112d_8 = ((1 \cdot d_6 + 2 \cdot d_7 + 3) \bmod 10^9) + 1 = ((1 \cdot 18 + 2 \cdot 45 + 3) \bmod 10^9) + 1 = 112

d9=((1⋅d7+2⋅d8+3) mod 109)+1=((1⋅45+2⋅112+3) mod 109)+1=273d_9 = ((1 \cdot d_7 + 2 \cdot d_8 + 3) \bmod 10^9) + 1 = ((1 \cdot 45 + 2 \cdot 112 + 3) \bmod 10^9) + 1 = 273

d10=((1⋅d8+2⋅d9+3) mod 109)+1=((1⋅112+2⋅273+3) mod 109)+1=662d_{10} = ((1 \cdot d_8 + 2 \cdot d_9 + 3) \bmod 10^9) + 1 = ((1 \cdot 112 + 2 \cdot 273 + 3) \bmod 10^9) + 1 = 662

예제2

  1. 예제 1

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

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