수열 연산
시간 제한1초메모리 제한512 MB
1 이상 K 이하 값으로 이루어진 두 수열 C와 D가 주어질 때, 길이 M 이상인 순증가 부분수열의 삽입과 삭제만으로 C를 D로 바꿀 수 있는지 판정하고 연산을 출력한다.
문제
모든 수가 이상 이하의 수로 구성된 수열이 있다. 이 수열에 다른 연속한 부분수열을 삽입하거나 삭제하는 연산을 원하는 만큼 할 수 있다. 단, 이 수열은 길이가 이상이어야 하며, 수열의 각 수 또한 이상 이하의 정수여야 한다.
연산 전의 수열이 인 길이 의 수열이라고 하자. 각 연산은 다음과 같이 표현할 수 있고, 등장하는 모든 수는 정수이다.
-
- 수열 의 번째 위치 앞에 수열 을 추가한다는 의미이다.
- 인 경우에, 수열의 가장 뒤에 을 추가한다는 의미이다.
- 를 만족해야 한다.
- 이후, 수열은 이 된다.
- 수열 의 번째 위치 앞에 수열 을 추가한다는 의미이다.
-
- 수열의 의 번째 위치부터 개의 수를 제거한다는 의미이다.
- 을 만족해야 한다.
- 이후, 수열은 이 된다.
예를 들어, 일 때, 수열 에 연산 를 적용하면 수열이 가 되고, 여기에 추가적으로 연산 를 적용하면 수열이 가 된다.
와 , 그리고 두 수열 , 가 주어졌을 때, 수열 에서 연산을 원하는 만큼 반복해서 적용해서 수열 를 만들 수 있는지를 구하고, 만들 수 있다면 해당 방법을 출력하여라.
입력
입력은 다음과 같은 형태로 주어진다.
출력
수열 에서 연산을 원하는 만큼 반복해서 적용해서 수열 를 만들 수 없다면 NO를 출력한다. 그렇지 않은 경우 다음과 같은 방법으로 출력한다.
YES
여기서 는 연산을 사용하는 횟수이며, 번째 연산은 로 표현되었다. 문제에서 주어진 연산을 문제에서 주어진 조건에 맞게 출력해야 한다.
제한
입력 및 출력에서 사용되는 모든 수는 정수이다.
입력 제한
출력 제한
- 입력 제한에 따른 모든 데이터에 대해서, 답이 존재하는 경우에는 출력 제한을 만족하는 답이 있음을 증명할 수 있다.
힌트
채점기는 공백의 종류나 개수에 민감하지 않지만, 너무 많은 공백을 출력한 경우 오답을 받을 수 있다.