시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
어떤 방에 콜라라고 불리는 매우 인기 있는 음료가 담긴 병이 M개 있다. 병에는 1, 2, ..., M의 번호가 매겨져 있으며, 같은 번호를 가진 병은 없다. 처음에 모든 병에는 정확히 K데시리터의 콜라가 들어 있다.
문 앞에는 목마른 사람 N명이 줄을 서 있다. 사람들에게는 1, 2, ..., N의 번호가 매겨져 있다. 번호가 작은 사람부터 차례대로(먼저 1번, 다음 2번, ...) 한 명씩 방에 들어가 병 하나에서 정확히 1데시리터의 콜라를 마시고 나온다. 어느 순간에도 방 안에는 최대 한 명만 있을 수 있다.
사람은 두 종류이다. 낭비하는 사람은 항상 현재 가장 많이 차 있는 병 중 하나에서 마신다. 절약하는 사람은 항상 현재 비어 있지 않으면서 가장 적게 차 있는 병 중 하나에서 마신다(빈 병은 무시한다). 조건을 만족하는 병이 여러 개일 때는 그중 아무 병이나 골라도 된다.
마지막 사람이 나온 뒤 각 병에 남아 있는 콜라의 양이 주어질 때, 각 사람이 어느 병에서 마셨는지 구하라.
첫째 줄에 세 정수 N, M, K (1 ≤ N ≤ 1000, 1 ≤ M ≤ 100, 1 ≤ K ≤ 20)가 주어진다. 각각 줄을 선 사람 수, 병의 개수, 각 병에 처음 들어 있는 콜라의 양(데시리터)이다.
둘째 줄에 'W'와 'E'로 이루어진 길이 N의 문자열이 주어진다. i번째 문자는 i번 사람을 나타내며, 'W'는 낭비하는 사람, 'E'는 절약하는 사람을 뜻한다.
셋째 줄에 M개의 정수가 주어지며, j번째 정수는 모두가 마신 뒤 병 j에 남은 콜라의 양이다. 이 정수들은 모두 집합 {0, 1, ..., K}에 속한다.
한 줄에 N개의 정수를 공백 하나로 구분하여 출력한다. i번째 정수는 i번 사람이 마신 병의 번호이다.
마시는 규칙과 최종 남은 양에 부합하는 배정은 항상 하나 이상 존재하지만, 유일하지는 않을 수 있다. 그러한 배정 중 사전순으로 가장 작은 것을 출력하라. 두 배정은 1번 사람부터 시작하는 병 번호의 수열로 비교하며, 두 수열이 처음으로 달라지는 위치에서 더 작은 값을 갖는 배정을 출력한다.