점프하는 로봇
시간 제한1초메모리 제한512 MB
원형 경로에서 점프할 때마다 민첩성이 1씩 늘어날 때, 한 바퀴를 완주하는 최소 초기 민첩성과 시작 플랫폼 번호를 구합니다.
문제
Flatland Dynamics사는 점프하는 로봇을 개발한다. 시험에는 번호가 1부터 까지 붙은 특수 플랫폼 개로 이루어진 원형 코스를 쓴다. 플랫폼 와 사이의 거리는 이고, 플랫폼 과 1 사이의 거리는 이다.
로봇에는 AI가 들어 있어서 시험 중에 더 멀리 뛰도록 학습한다. 로봇은 어느 순간이든 정수 로 나타내는 민첩성을 가진다. 이면 로봇은 플랫폼 에서 로 뛸 수 있다. 마찬가지로 이면 플랫폼 에서 1로 뛸 수 있다. 한 번 뛸 때마다 로봇의 민첩성은 1 증가한다.
개발자는 시작 플랫폼을 하나 고른다. 로봇이 플랫폼을 차례로 번 뛰어 한 바퀴를 돌고 시작 플랫폼으로 돌아오면 실험은 성공이다.
개발자는 실험을 성공시킬 수 있는 초기 민첩성의 최솟값과, 로봇을 어느 플랫폼에서 출발시켜야 하는지 알고 싶어 한다.
입력
첫째 줄에 ()이 주어진다.
둘째 줄에는 거리 배열이 주어지는 형식을 나타내는 정수 가 주어진다.
이면 셋째 줄에 정수 () 개가 주어진다.
이면 셋째 줄에 정수 ()과 정수 , , ()가 주어진다. 넷째 줄에는 정수 () 개가 주어진다. 거리는 다음과 같이 계산한다.
이면 이다.
이면 이다. 여기서 는 나머지 연산이며, C++, Java, Python에서는 %로 쓴다.
출력
정수 두 개를 출력한다. 첫 번째는 최소 초기 민첩성 이다. 두 번째는 그 민첩성에서 실험에 성공하는 시작 플랫폼의 번호이다.
성공하는 시작 플랫폼이 여럿이면 그중 아무 번호나 출력해도 된다.
힌트
두 번째 예제의 거리 배열은 이다. 부터 은 다음과 같이 계산된다.