쉬운 퀘스트
면접 대비시간 제한3초메모리 제한512 MB
선물(+종류), 비용(-종류), 유니콘(0)으로 이루어진 수열에서 모든 비용을 지불할 수 있는지 판단하고, 각 유니콘에게 요청할 종류를 사전순으로 가장 작게 정한다.
문제
젊은 용사가 모험을 시작한다. 현명한 마법사가 첫 임무로 쉬운 퀘스트를 하나 내주었다. 용사는 이 퀘스트에서 마법 생물 마리를 정해진 순서대로 만난다. 마법사는 용사를 돕기 위해 정수 개로 이루어진 목록 을 알려주었다.
- 가 양수이면 번째 생물은 선한 생물이고, 용사에게 종류가 인 마법 물건을 하나 준다. 용사는 같은 종류의 물건을 여러 개 지녀도 된다.
- 가 음수이면 번째 생물은 악한 생물이고, 이 생물을 물리치려면 종류가 인 마법 물건이 하나 필요하다. 마법 물건은 모두 약해서 한 번만 쓸 수 있다.
- 가 0이면 번째 생물은 유니콘이다. 유니콘은 용사가 부탁하는 종류의 마법 물건을 주는데, 딱 하나만 준다.
용사가 길에서 만나는 적을 모두 물리치고 퀘스트를 끝낼 수 있는지 판단하고, 끝낼 수 있으면 유니콘마다 어떤 종류를 부탁해야 하는지 정하라.
입력
첫째 줄에 정수 이 주어진다 ().
둘째 줄에 정수 이 공백으로 구분되어 주어진다 ().
출력
적을 모두 물리치는 것이 불가능하면 No를 출력한다.
가능하면 첫째 줄에 Yes를 출력하고, 둘째 줄에 용사가 유니콘을 만나는 순서대로 각 유니콘에게 부탁할 물건의 종류를 공백 하나로 구분해 출력한다. 종류는 1 이상 1000 이하의 정수여야 한다. 유니콘을 한 마리도 만나지 않으면 Yes만 출력한다.
답이 여러 가지면 사전순으로 가장 앞서는 것을 출력한다. 길이가 같은 두 수열 와 에서 인 위치 가 있고 보다 앞에 있는 원소가 모두 같으면, 가 보다 사전순으로 앞선다.