다다스컴퍼니의 사원 따스는 길이가 인 괄호 문자열을 만들려고 한다. 각 위치에는 여는 괄호 ( 또는 닫는 괄호 )를 하나씩 쓸 수 있다. 번째 위치에 (를 쓰면 원, )를 쓰면 원을 받는다. 따스가 받는 돈은 모든 위치에서 받는 돈의 합이다.
올바른 괄호 문자열은 다음 두 조건을 만족하는 문자열이다.
예를 들어 (), (()), ()()는 올바른 괄호 문자열이지만, )(와 (()는 그렇지 않다.
사장 다다스는 개의 구간 를 정했다. 따스가 만든 문자열에서 번째부터 번째까지의 문자를 순서대로 떼어 내면, 그 문자열이 올바른 괄호 문자열이어야 한다. 이 조건을 모든 구간에서 동시에 만족해야 한다.
각 구간은 그 구간 안의 문자만으로 올바른지 판단한다. 구간 바깥의 괄호를 가져와 짝을 맞출 수 없다. 조건에 포함되지 않은 위치에도 괄호를 쓰고 돈을 받으며, 문자열 전체가 올바른 괄호 문자열일 필요는 없다.
모든 조건을 만족하면서 따스가 받을 수 있는 돈의 최댓값을 구하여라.
첫째 줄에 테스트 케이스의 개수 가 주어진다. 입력의 전체 형식은 다음과 같다.
각 테스트 케이스마다 모든 구간 조건을 만족할 때 받을 수 있는 돈의 최댓값을 한 줄에 출력한다.
첫 번째 테스트 케이스에서는 (())(를 만들 수 있다. 의 문자열은 (())이고, 의 문자열은 ()이므로 두 조건을 모두 만족한다. 각 위치에서 받는 돈은 차례로 , , , , 원이며, 합은 원이다.
각 테스트 케이스는 다음 형식으로 주어진다.
첫째 줄에는 문자열의 길이 과 조건의 개수 이 주어진다. 둘째 줄과 셋째 줄에는 각 위치에 여는 괄호와 닫는 괄호를 쓸 때 받는 돈이 각각 주어진다. 다음 개의 줄에는 조건을 적용할 구간의 양 끝점이 주어진다. 같은 구간이 여러 번 주어질 수도 있다.
|
| 3 | 16 | , . 모든 조건이 문자열 전체에 적용된다. |
| 4 | 19 |
|
| 5 | 21 | 주어진 구간들은 서로 겹치지 않는다. 어떤 위치도 둘 이상의 구간에 포함되지 않는다. |
| 6 | 26 | 추가적인 제약이 없다. |
이 경우 첫 네 문자는 조건에 의해 (())로 정해진다. 번째 위치는 어떤 구간에도 들어 있지 않으므로, 더 많은 돈을 받는 (를 고르면 된다. 만들어진 문자열 전체는 올바른 괄호 문자열이 아니지만, 주어진 조건은 모두 만족한다.
두 번째 테스트 케이스에서는 동일한 조건이 두 번 주어졌다. (())를 만들면 원을 받고, ()()를 만들면 원을 받는다. 따라서 정답은 이다. 같은 구간이 여러 번 주어져도 받는 돈을 여러 번 더하지 않는다.
첫 번째 테스트 케이스에서는 두 구간이 에서 겹친다. 두 조건을 동시에 만족하는 문자열은 ()()()이며, 받는 돈은 원이다. 각 위치에서 보수가 큰 괄호를 따로 고르면 )()()(가 되어 조건을 만족하지 않는다.
두 번째 테스트 케이스에서는 ()를 만들어야 한다. 두 위치에서 받는 돈이 모두 원이므로 정답도 이다.