해결한 사람
0
명
정답률
0.00
%
시간 제한
1000
ms
메모리 제한
245
MB
정수로 채워진 x × y 크기의 행렬 A가 있다. 모든
,
에 대해 Ai, j = y(i - 1) + j이다. 명백히 의 모든 정수는 이 행렬에 정확히 한 번씩 등장한다.
당신은 이 행렬에서 어떤 경로를 따라 이동했다. 경로는 방문한 칸의 수열 a1, a2, ..., an으로 나타낼 수 있으며, 이는 a1가 들어 있는 칸에서 시작한 뒤 a2이 들어 있는 칸으로 이동하는 식으로 계속했음을 뜻한다.
i-th번째 행과 j-th번째 열에 있는 칸(이 칸을 (i, j)로 표기한다)에서는 다음 칸 중 하나로 이동할 수 있다:
한 번 이동하려면 인접한 칸으로 가야 한다는 점에 유의한다. 같은 칸에 머무르는 것은 허용되지 않는다. x와 y의 정확한 값은 알 수 없지만, a1이 들어 있는 칸에서 시작하여 a2이 들어 있는 칸으로 이동하고(한 번의 이동으로), 그다음 a3이 들어 있는 칸으로 이동하는(역시 한 번의 이동으로) 식의 이동이 가능하도록 이 두 수의 가능한 값을 찾아야 한다. 이동 수열과 모순되지 않도록 x와 y를 정할 수 있는가?
첫 번째 줄에는 정수 하나 n (1 ≤ n ≤ 200000)가 주어진다. 이는 경로에서 방문한 칸의 수이다(어떤 칸을 두 번 방문했다면 목록에도 두 번 나타난다).
두 번째 줄에는 경로상의 칸에 들어 있는 정수 n개, 즉 a1, a2, ..., an (1 ≤ ai ≤ 109)가 주어진다.
1 ≤ x, y ≤ 109를 만족하는 x와 y의 가능한 모든 값이 경로에 관한 정보와 모순된다면 NO를 출력한다.
그렇지 않다면 첫 번째 줄에 YES를 출력하고, 두 번째 줄에 그러한 행과 열의 개수를 갖는 행렬에서 경로가 가능하도록 하는 x와 y의 값을 출력한다. 이 값들은 109를 초과하지 않는 양의 정수여야 한다는 점을 기억한다.
6
1 2 1 2 5 3
NO2
1 10
YES
1000000000 98
1 2 3 6 9 8 5 2
YES
1000000000 3첫 번째 테스트의 행렬과 그 위의 경로는 다음과 같다:

또한 첫 번째 예제와 세 번째 예제에는 모두 올바른 답이 여러 개 존재한다.