스타일리시

시간 제한1초메모리 제한128 MB

요약
올바르게 들여쓰기된 프로그램에서 괄호별 들여쓰기 가중치를 구한 뒤, 이를 이용해 다른 프로그램의 각 줄 들여쓰기를 계산하거나 결정 불가로 표시합니다.
난이도

보통10점 중 7점

유형
수학, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

스타일리시(Stylish)는 프로그래밍 언어이다.

스타일리시의 문법은 알파벳으로 이루어진 이름, 세 종류의 괄호, 마침표(.), 줄바꿈으로 구성된다.

괄호는 소괄호 ( ), 중괄호 { }, 대괄호 [ ]의 세 종류이며, 항상 짝을 이루도록 사용하고 올바르게 중첩된다. 즉, 각 여는 괄호는 같은 종류의 닫는 괄호와 대응되며 괄호끼리 서로 교차하지 않는다. 다른 언어와 달리 스타일리시는 공백 대신 마침표(.)로 들여쓰기를 표현한다. 다음은 스타일리시 프로그램의 예이다.

(Welcome.to
.........Stylish)
{Stylish.is
.....[.(a.programming.language.fun.to.learn)
.......]
.....Maybe.[
.......It.will.be.an.official.ICPC.language
.......]
.....}

위 예에서 보듯이 스타일리시 프로그램은 마침표로 들여쓰기를 한다. 한 줄의 들여쓰기 양은 그 줄 맨 앞에 연속으로 놓인 마침표의 개수이다.

잘 들여쓰기된 스타일리시 프로그램의 들여쓰기 양은 들여쓰기 스타일 (R,C,S)(R, C, S)로 결정되며, 1≤R,C,S≤201 \le R, C, S \le 20이다. RR은 소괄호, CC는 중괄호, SS는 대괄호에 대응하는 들여쓰기 양이다.

잘 들여쓰기된 프로그램에서 한 줄의 들여쓰기 양은 R(ro−rc)+C(co−cc)+S(so−sc)R(r_o - r_c) + C(c_o - c_c) + S(s_o - s_c)로 정해진다. 여기서 ro,co,sor_o, c_o, s_o는 그 줄 이전까지 나온 여는 소괄호·중괄호·대괄호의 개수이고, rc,cc,scr_c, c_c, s_c는 닫는 소괄호·중괄호·대괄호의 개수이다. 잘 들여쓰기된 프로그램의 첫 줄은 항상 들여쓰기가 없다.

위 예의 들여쓰기 스타일은 (R,C,S)=(9,5,2)(R, C, S) = (9, 5, 2)이다. 첫째 줄에는 여는 소괄호가 하나 있으므로, 둘째 줄의 들여쓰기 양은 9(1−0)+5(0−0)+2(0−0)=99(1 - 0) + 5(0 - 0) + 2(0 - 0) = 9이다. 처음 네 줄에는 여는 소괄호가 둘, 여는 중괄호와 대괄호가 각각 하나, 닫는 소괄호가 둘 있으므로, 다섯째 줄의 들여쓰기 양은 9(2−2)+5(1−0)+2(1−0)=79(2 - 2) + 5(1 - 0) + 2(1 - 0) = 7이다.

잘 들여쓰기된 스타일리시 프로그램 PP와 그렇지 않은 프로그램 QQ가 주어질 때, PP의 들여쓰기 스타일을 알아내어 QQ에 적용하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 정수 pp와 qq가 주어진다. (1≤p,q≤10)(1 \le p, q \le 10)

이어지는 pp개의 줄에는 스타일리시 마스터가 작성한 잘 들여쓰기된 프로그램 PP가, 그다음 qq개의 줄에는 다른 프로그램 QQ가 주어진다. 두 프로그램의 각 줄은 최소 1글자 이상이며 80글자를 넘지 않는다. QQ의 모든 줄은 마침표로 시작하지 않는다.

입력의 마지막 줄에는 0이 두 개 주어진다.

출력

각 테스트 케이스마다 PP의 들여쓰기 스타일을 알아내어 QQ에 적용한 뒤, QQ 각 줄의 들여쓰기 양을 공백으로 구분하여 출력한다. 들여쓰기 양을 유일하게 결정할 수 없는 줄은 -1을 출력한다.

예제1

  1. 예제 1

    입력
    5 4
    (Follow.my.style
    .........starting.from.round.brackets)
    {then.curly.brackets
    .....[.and.finally
    .......square.brackets.]}
    (Thank.you
    {for.showing.me
    [all
    the.secrets]})
    4 2
    (This.time.I.will.show.you
    .........(how.to.use.round.brackets)
    .........[but.not.about.square.brackets]
    .........{nor.curly.brackets})
    (I.learned
    how.to.use.round.brackets)
    4 2
    (This.time.I.will.show.you
    .........(how.to.use.round.brackets)
    .........[but.not.about.square.brackets]
    .........{nor.curly.brackets})
    [I.have.not.learned
    how.to.use.square.brackets]
    2 2
    (Be.smart.and.let.fear.of
    ..(closed.brackets).go)
    (A.pair.of.round.brackets.enclosing
    [A.line.enclosed.in.square.brackets])
    1 2
    Telling.you.nothing.but.you.can.make.it
    [One.liner.(is).(never.indented)]
    [One.liner.(is).(never.indented)]
    2 4
    ([{Learn.from.my.KungFu
    ...}])
    ((
    {{
    [[
    ]]}}))
    1 2
    Do.not.waste.your.time.trying.to.read.from.emptiness
    (
    )
    2 3
    ({Quite.interesting.art.of.ambiguity
    ....})
    {
    (
    )}
    2 4
    ({[
    ............................................................]})
    (
    {
    [
    ]})
    0 0
    
    예상 출력
    0 9 14 16
    0 9
    0 -1
    0 2
    0 0
    0 2 4 6
    0 -1
    0 -1 4
    0 20 40 60