MrCodeFormatGrader
면접 대비시간 제한1초메모리 제한1024 MB
전체 줄 수 C와 증가하는 순서의 오류 줄 번호 N개가 주어질 때, 오류 줄과 정상 줄을 범위로 묶어 쉼표로 나열하고 마지막 항목은 "and"로 연결해 출력한다.
문제
Bob 교수는 소스 코드 서식 자동 채점 웹사이트를 만들고 있다. 웹사이트의 이름은 "MrCodeFormatGrader"이다. Bob의 프로그램을 실행해 소스 코드를 제출하면, 프로그램은 소스 코드의 줄 수 , 서식 오류가 있는 소스 코드 줄 수 , 그리고 서식이 올바르지 않은 줄 번호의 목록을 출력한다. 줄 번호는 공백으로 구분되며 오름차순으로 주어진다.
예를 들어 100줄짜리 프로그램에서 2, 3, 5, 10, 11, 12, 25, 26, 88, 89번 줄에 총 10개의 오류가 있다면, 원래 프로그램은 다음과 같이 출력할 수 있다.
100 10
2 3 5 10 11 12 25 26 88 89
그런데 이 프로그램을 사용한 사람들은 이 출력이 읽기 불편하다고 말했다. 당신의 임무는 위 출력을 읽고, 오류 목록을 압축한 것과 올바른 줄 목록을 압축한 것, 이렇게 두 목록을 보여주는 것이다.
입력
입력은 두 줄로 이루어진다. 첫째 줄에는 검사하는 프로그램의 소스 코드 줄 수 와 서식 오류가 있는 소스 코드 줄 수 이 주어진다. 는 을 만족하고, 은 을 만족한다. 둘째 줄에는 서식 오류가 있는 소스 코드 줄의 번호 개가 주어진다. 이 값은 이하의 양의 정수이며 엄격히 증가하는 순서로 나열된다.
출력
출력은 두 줄로 이루어진다. 첫째 줄은 문자열 "Errors:"로 시작하고, 그 뒤에 공백, 그 뒤에 오류가 있는 줄의 목록이 온다. 둘째 줄은 문자열 "Correct:"로 시작하고, 그 뒤에 공백, 그 뒤에 오류가 없는 줄의 목록이 온다. 두 목록 모두 연속한 줄 번호의 묶음은 첫 줄과 마지막 줄을 하이픈('-')으로 구분해 나타낸다. 목록에 항목이 두 개 이상이면 각 항목은 쉼표와 공백으로 구분하되, 각 목록의 마지막 값(또는 마지막 연속 구간) 앞에는 쉼표와 공백 대신 "and"를 쓴다. 예제 출력을 참고하라. 참고: 모든 프로그램에는 오류가 있는 줄이 적어도 하나, 올바른 줄이 적어도 하나 있다.