행진 순서
시간 제한1초메모리 제한2048 MB
n명의 교수와 제안된 행진 순서가 주어질 때, 그 순서를 만드는 가장 작은 m을 찾고 없으면 NO를 출력하는 문제입니다.
문제
학장 밥 로버츠는 대학 졸업식에서 교수들이 행진하는 순서를 정한다. 새로 만들어진 DEI 연구학과 교수들이 연공서열에 따른 순서에 불만을 제기하자, 학장은 행진 순서를 무작위로 정하기로 했다. 밥은 이 방식이 괜찮다고 본다. 투명성을 위해 그는 행진 목록을 만드는 방법을 공개했다.
그는 알파벳 순으로 정렬된 명의 교수 목록과 음이 아닌 정수 로 시작한다. 교수들에게는 의 번호가 붙어 있다. 행진 목록의 첫 번째 사람은 알파벳 목록에서 위치 에 있는 사람이다. 그 사람이 목록에서 빠지면 목록 길이가 하나 줄고, 위치가 보다 큰 사람들은 한 칸씩 앞으로 당겨진다. 두 번째 사람은 위치 에 있는 사람이며, 이후도 같은 방식으로 정한다.
예를 들어 교수가 A, B, C, D, E, F 여섯 명이고 라고 하자. 행진 목록은 다음과 같이 만들어진다.
이 방법은 공정해 보이지만 검증하기는 어렵다. 로버츠 학장이 사용하는 값을 공개하지 않기 때문에, 교수들은 학장이 밝힌 방법을 실제로 따르는지, 아니면 개인 선호로 순서를 골랐는지 알 수 없다. 교수들이 알고 싶은 것은 주어진 행진 순서를 만들어 낼 수 있는 값이 있는지 여부이다.
입력
첫째 줄에 행진할 교수의 수를 나타내는 10진수 정수 ()이 주어진다. 둘째 줄에는 제안된 행진 순서를 나타내는 문자열이 주어진다. 이 문자열은 알파벳 대문자 처음 개를 순서만 바꾼 것이다.
출력
주어진 행진 순서가 이 알고리즘으로 만들어질 수 없다면 NO라는 한 줄을 출력한다. 만들어질 수 있다면 두 줄을 출력한다. 첫째 줄에는 YES를, 둘째 줄에는 주어진 행진 순서를 만들어 내는 가장 작은 음이 아닌 정수 을 출력한다.