해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
정보과학 The All-Berland National Olympiad가 막 끝났다! Now Vladimir는 올림피아드의 대회를 인기 있는 Codehorses 웹사이트에 체육관 대회로 업로드하려 한다.
안타깝게도 올림피아드 데이터가 담긴 아카이브는 엉망이다. 예를 들어, 테스트가 담긴 파일들의 이름은 아무런 규칙 없이 임의로 지어져 있다.
Vladimir는 테스트 파일들의 이름을 1부터 시작하며 중간에 빠지는 수가 없는 서로 다른 정수, 즉 "1", "2", ..., "n'로 바꾸려 한다. 여기서 n는 전체 테스트의 수이다.
일부 파일에는 문제 설명에 나오는 테스트(예제)가 들어 있고, 나머지 파일에는 일반 테스트가 들어 있다. 예제가 하나도 없을 수도 있으며, 모든 테스트가 예제일 수도 있다. Vladimir는 예제들이 앞쪽의 몇 개 테스트가 되고, 그다음의 모든 파일에는 일반 테스트만 들어 있도록 파일 이름을 바꾸려 한다.
Vladimir가 수행할 수 있는 유일한 연산은 "move" 명령이다. Vladimir는 각 줄이 "move file_1 file_2"인 스크립트 파일을 작성하려 한다. 이는 파일 "file_1"의 이름을 "file_2"로 바꾼다는 뜻이다. 이 줄이 실행되는 시점에 파일 "file_2"가 존재한다면 그 파일은 덮어쓴다. "move file_1 file_2" 줄이 실행된 뒤에는 파일 "file_1"가 존재하지 않지만, "move" 명령 이전의 "file_1" 내용과 같은 내용을 가진 파일 "file_2"가 존재한다.
스크립트 실행 후 다음 조건을 만족하도록 가능한 최소 개수의 줄로 스크립트 파일을 작성하는 것을 Help Vladimir:
첫째 줄에 테스트 파일의 수를 나타내는 정수 n (1 ≤ n ≤ 105)가 하나 주어진다.
이어서 각각 테스트 파일 하나를 설명하는 n개의 줄이 주어진다. 각 줄은 "name_i type_i" 형식이다. 여기서 "name_i"는 파일 이름이고, i-th 파일에 예제 테스트가 들어 있으면 "type_i"는 "1"이며, 일반 테스트가 들어 있으면 "0"이다. 각 파일의 이름은 길이가 1에서 6자인 숫자와 영문 소문자로 이루어진 문자열이다. 파일 이름은 서로 다름이 보장된다.
첫째 줄에 Vladimir의 스크립트 파일에 포함되는 줄의 최소 개수를 출력한다.
그다음 스크립트 파일을 출력한다. 각 줄은 "move file_1 file_2"이어야 한다. 여기서 "file_1"는 이 줄이 실행되는 시점에 존재하는 파일 이름이고, "file_2"은 길이가 1에서 6자인 숫자와 영문 소문자로 이루어진 문자열이다.
5
01 0
2 1
2extra 0
3 1
99 0
4
move 3 1
move 01 3
move 2extra 4
move 99 5
2
1 0
2 1
3
move 1 3
move 2 1
move 3 2
5
1 0
11 1
111 0
1111 1
11111 0
5
move 1 3
move 11 1
move 111 4
move 1111 2
move 11111 5