만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

괄호 댄스

시간 제한3초메모리 제한1024 MB

요약
문자열에서 순서를 유지하며 괄호 2K개를 골라 올바른 괄호 문자열을 만들 때, 고른 괄호 값의 합이 최대가 되는 값을 K마다 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그리디, 힙
정답자
아직 제출이 없습니다

문제

SNUPC 폐막 공연의 하이라이트는 괄호 댄스이다. 괄호 댄스를 위해 총 NN개의 괄호가 무대 뒤에 일렬로 줄을 서서 연습하고 있다. 각 괄호는 여는 괄호 또는 닫는 괄호 중 하나이다.

공연 담당자인 서현이는 공연 30분 전에야 무대가 너무 좁아 괄호 NN개를 모두 넣을 수 없다는 사실을 알게 되었다. 공연장의 크기가 KK일 때, 서현이는 괄호들의 순서를 바꾸지 않고 정확히 2K2K개의 괄호를 골라 공연장에 내보내려 한다. 고른 괄호들이 원래 배열에서 연속일 필요는 없다.

각 괄호에는 아름다움을 의미하는 정수 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 있다. AiA_i는 음수일 수도 있다.

서현이는 다음 조건을 만족해야 아름다운 공연이라고 생각한다.

  • 선택한 괄호들을 앞에서부터 읽었을 때 올바른 괄호 문자열이 되어야 한다.
  • 공연의 아름다움은 선택한 괄호들의 아름다움의 합이며, 이 값이 가능한 한 최대가 되어야 한다.

올바른 괄호 문자열은 다음과 같이 정의된다.

  1. 빈 문자열은 올바른 괄호 문자열이다.
  2. 문자열 X가 올바른 괄호 문자열이면 (X)도 올바른 괄호 문자열이다.
  3. 문자열 X와 Y가 올바른 괄호 문자열이면 XY도 올바른 괄호 문자열이다.
  4. 위 규칙으로 만들 수 없는 문자열은 올바른 괄호 문자열이 아니다.

입력

첫째 줄에 문자열의 길이 NN이 주어진다. (2≤N≤200 0002 \leq N \leq 200\,000)

둘째 줄에 현재 괄호들의 배열을 나타내는 (와 )로 이루어진 문자열 SS가 주어진다. SS는 올바른 괄호 문자열이 아닐 수도 있다.

셋째 줄에 각 괄호의 아름다움을 나타내는 정수 A1,⋯ ,ANA_1, \cdots, A_N이 공백으로 구분되어 주어진다. (−108≤Ai≤108-10^{8} \le A_i \le 10^{8})

출력

⌊N2⌋\lfloor\frac{N}{2}\rfloor개의 줄에 걸쳐 답을 출력한다. ii번째 줄에는 공연장의 크기가 ii일 때 아름다운 공연의 아름다움을 출력한다. 공연을 진행하는 것이 불가능하면 NO를 출력한다.

예제3

  1. 예제 1

    입력
    7
    ())(()(
    3 1 4 1 5 9 2
    
    예상 출력
    14
    21
    NO
    
  2. 예제 2

    입력
    5
    (((((
    9 1 -3 -5 -7
    
    예상 출력
    NO
    NO
    
  3. 예제 3

    입력
    10
    ((((()))))
    9 -3 1 -7 5 2 4 -10 6 -8
    
    예상 출력
    15
    24
    27
    16
    -1