프로그램 명: lineup
제한시간: 1
초
농부 존은 N (1 <= N <= 100,000) 마리의 소를 줄을 세우고 있다. 각 소들은 혈통 별로 1 .. K( 1 <= K <= 10,000) 의 낙인이 찍혀있다.
예를들어 , N 이 14 이고 , K 가 5 인 경우를 생각하자.
1 5 3 2 5 1 3 4 4 2 5 1 2 3
부분수열이란 연속될 필요는 없고 순서에 맞게 존재하면 된다. 3 , 4 , 1 , 3 은 부분 수열이다.
몇 가지 부분 수열의 예를 보면
- 1 ... 한자리 부분 수열
- 5 5 1 ... 세자리 부분 수열
- 1 5 3 ... 세자리 부분 수열
- 3 4 1 3 ... 네자리 부분 수열
- ...
만들 수 없는(모든 경우) 부분 수열의 최소 자리수를 구하는 것이 문제이다.
입력
- 첫 라인은 N , K 가 주어진다.
- 다을 줄 부터 N 개의 수가 1..K 번호로 소들의 혈통 번호가 주어진다.
출력
입력의 부분 문자열로 만들수 없는 최단 수열의 크기를 출력한다.
입출력 예
입력
14 5
1
5
3
2
5
1
3
4
4
2
5
1
2
3
출력
3
보충 설명
한 자리 부분 문자열 가능. 두 자리 부분 문자열도 만들수 있다. 3 자리 2 , 2 , 4 란 부분 문자열은 존재하지 않는다.
- 한 자리 부분 수열 ok(O)
- 두 자리 부분 수열 ok(O)
- 1 , 1
- 1 , 2
- 1 , 3
- 1 , 4
- 2 , 1
- 2 , 2
- 2 , 3
- 2 , 4
- 2 , 5
- ....
- 5 , 1
- 5 , 2
- 5 , 3
- 5 , 4
- 5 , 5
- 세 자리 부분 수열 ok(X)
- 1,1,1
- 1,1,2
- 1,1,3
- 1,1,4
- 1,1,5
- 1,2,1
- 1,2,2
- ...
- 2,2,3
- 2,2,4 .... 부분 문자열 존재 하지 않음
- ...
답은 3
출처:USACO 2004 U S Open
[질/답]
[제출 현황]
[푼 후(1)]