Dirt Ratio
시간 제한2초메모리 제한512 MB
연속한 부분 배열을 골라 (서로 다른 값의 개수)/(부분 배열 길이)를 최소로 만들고 그 값을 출력한다.
문제
어떤 대회에서 팀의 dirt ratio는 다음과 같이 계산된다. 먼저 팀이 맞히지 못한 문제는 모두 무시한다. 팀이 대회 중에 개의 문제를 맞혔고, 이 문제들에 대해 총 번의 제출을 했다고 하자. 그러면 dirt ratio는 로 정의된다. 팀의 dirt ratio가 너무 낮으면 페널티를 더 많이 받는 경향이 있어, 보통 순위에 불리하다.
Little Q는 코치이고, 지금 자기 학생 팀의 제출 목록을 보고 있다. 목록에는 문제 ID만 있고, 어떤 제출이 틀렸는지 어떤 제출이 맞았는지는 나오지 않는다. 하지만 그는 목록에 나오는 모든 문제를 팀이 대회 중에 결국 풀었다고 가정했다.
Little Q는 팀의 dirt ratio를 계산하고 몹시 화가 났다. 비율이 낮았기 때문이다. 그는 학생들과 이야기를 하려고 한다. 일을 더 심각해 보이게 하려고, 그는 목록의 연속한 부분 수열을 하나 고르려고 한다. 그러면 그 부분 수열에 적어도 한 번 나오는 문제와 제출만 고려하고, 이런 문제마다 마지막 제출은 맞았고 그 앞의 제출은 모두 틀렸다고 가정한다. 그런 다음 Little Q는 고른 연속한 부분 수열만 가지고 dirt ratio를 계산한다.
여러분은 가장 낮은 dirt ratio를 주는 부분 수열을 찾는 프로그램을 작성해야 한다.
입력
첫째 줄에 제출 목록의 길이 이 주어진다 ().
둘째 줄에 개의 양의 정수 , , , 이 주어진다. 이는 각 제출의 문제 ID이다 ().
출력
가능한 가장 낮은 dirt ratio를 한 줄에 하나의 실수로 출력한다.
답의 절대 오차는 이하여야 한다.