무작위 순열 생성기
시간 제한1초메모리 제한1024 MB
값 i가 w_i개씩 들어 있는 집합에서 매번 남은 것 중 p번째를 골라 제거할 때, 값이 모두 사라지는 순서를 구한다.
문제
국렬이는 1부터 N까지의 양의 정수로 이루어진 순열을 주어진 양의 정수 w1 ... , wN를 이용해서 무작위로 만들 것이다. 다음은 무작위로 순열을 만드는 방법이다.
- 1부터 N까지의 양의 정수 i (1 ≤ i ≤ N)를 연속적으로 wi개씩 배치한다.
- 현재 배치된 양의 정수의 총 개수를 W라고 하자. 1부터 W까지의 양의 정수들 중에서 균등하게 숫자 하나 pi를 선택한다.
- pi번째 수를 순열에 추가한다.
- 순열에 추가한 수들을 전부 지우고, 남은 수가 없을 때까지 2부터 4의 과정을 거친다.
w1부터 wN까지, p1부터 pN까지의 수가 주어졌을 때, 나오는 순열을 구해 보자.
입력
첫 번째 줄에는 N (1 ≤ N ≤ 200,000)이 주어진다.
두 번째 줄에는 1,000 이하의 양의 정수 w1부터 wN까지가 주어진다.
세 번째 줄에는 양의 정수 p1부터 pN까지가 주어진다. p1부터 pN까지로 수열을 만들 수 있는 경우만 주어진다.
출력
최종적으로 나오는 1부터 N까지 양의 정수들로 이루어진 수열을 구하자.