무작위 문제
시간 제한2초메모리 제한512 MB
p개의 숫자에서 세 규칙을 모두 만족하고 ceil(p/40)+1번 이상 나타나는 a(n)b(m)c 삼중 상관관계를 찾고, 없으면 random sequence를 출력합니다.
문제
난수열을 만드는 것은 쉽지 않습니다. 많은 수열이 무작위로 보이지만, 자세히 살펴보면 숫자가 나타나는 방식에 숨은 규칙이 발견되기도 합니다. 예를 들어 4 7 9...로 시작하는 다음 100자리 "무작위" 수열을 봅시다.
4 7 9 5 9 3 5 0 0 1 7 8 5 0 2 6 3 5 4 4
4 6 3 3 2 7 1 8 7 8 7 6 1 1 7 2 5 4 7 2
0 4 4 5 8 3 0 6 9 3 2 6 6 8 5 2 5 1 2 7
2 4 1 0 0 4 9 1 8 7 5 0 4 4 8 4 3 2 6 8
8 5 6 7 0 9 7 0 3 6 1 4 4 1 2 3 2 6 9 9
4 바로 뒤에 4가 올 때마다, 그로부터 세 번째 값은 3이 됩니다. 이런 특징을 삼중 상관관계라 부르며, 4(1)4(3)3과 같이 표기합니다. 괄호 안의 숫자는 각 값 사이의 거리를 뜻합니다. 정확히 말하면, p개의 숫자로 이루어진 수열이 a(n)b(m)c 삼중 상관관계를 가진다는 것은 다음 조건을 만족한다는 뜻입니다.
- a가 n칸 뒤에 b가 나올 때마다, b의 위치에서 m칸 뒤에 항상 c가 있다. 단, b의 위치가 끝에서 m-1 이내라면 예외로 한다.
- b가 m칸 뒤에 c가 나올 때마다, b의 위치에서 n칸 앞에 항상 a가 있다. 단, b의 위치가 처음에서 n-1 이내라면 예외로 한다.
- a가 n+m칸 뒤에 c가 나올 때마다, a의 위치에서 n칸 뒤에 항상 b가 있다.
- 이 상관관계가 최소 ceil(p/40)+1번 나타난다. 여기서 ceil(x)는 x 이상인 가장 작은 정수이다.
입력
입력은 수열에 있는 난수의 개수 p (p ≤ 1 000)를 나타내는 양의 정수로 시작합니다. 다음 줄부터 p개의 숫자가 공백으로 구분되어 주어지며, 여러 줄에 걸쳐 나올 수 있습니다. 한 줄에는 숫자가 100개를 넘지 않고, 빈 줄은 없습니다.
출력
수열에 해당 삼중 상관관계가 있으면 a, b, c, n, m을 채워 triple correlation a(n)b(m)c found를 출력합니다. 없으면 random sequence를 출력합니다. 삼중 상관관계가 여럿이면, a값이 처음 나타나는 위치가 가장 이른 것을 출력합니다. 그래도 같다면 n이 작은 것을, 그래도 같다면 m이 작은 것을 고릅니다.