해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
괄호열에 기호 '+'와 '1'을 삽입하여 올바른 산술식을 만들 수 있으면 그 괄호열을 올바른 괄호열이라고 한다. 예를 들어, 괄호열 "(()())"은 기호 '+'와 '1'을 삽입하여 올바른 산술식 "((1+1)+(1+1))"을 만들 수 있으므로 올바른 괄호열이다. 또한 다음 괄호열도 올바르다: "()()()", "(())", "()". 다음 괄호열은 올바른 괄호열이 아니다: ")(", "(()", "())(()".
이 문제에서는 두 정수 n와 k가 주어진다. 여러분의 과제는 둥근괄호로 이루어지고 길이가 2·n이며 모든 여는 괄호의 중첩도 총합이 정확히 k인 올바른 괄호열을 구성하는 것이다. 하나의 여는 괄호의 중첩도는 현재 여는 괄호가 포함된 괄호 쌍의 수와 같다.
예를 들어, 괄호열 "()(())"에서 첫 번째 여는 괄호의 중첩도는 0이고, 두 번째 여는 괄호의 중첩도는 0이며, 세 번째 여는 괄호의 중첩도는 1이다. 따라서 중첩도의 총합은 1이다.
첫 번째 줄에 두 정수 n와 k (1 ≤ n ≤ 3·105, 0 ≤ k ≤ 1018) — 여는 괄호의 수와 필요한 중첩도의 총합이 주어진다.
요구되는 둥근괄호로 이루어진 올바른 괄호열을 출력한다.
해가 없으면 "Impossible"을 따옴표 없이 출력한다.
3 1
(())()2 5
Impossible
4 6
(((())))첫 번째 예제는 문제 본문에서 살펴보았다.
두 번째 예제의 답은 "(((())))"이다. 첫 번째 여는 괄호의 중첩도는 0이고, 두 번째는 1이며, 세 번째는 2이고, 네 번째는 3이다. 따라서 중첩도의 총합은 0 + 1 + 2 + 3 = 6이다.
세 번째 예제에서는 여는 괄호가 두 개일 때 가능한 중첩도의 최대 총합이 1이므로 올바른 괄호열을 구성할 수 없다. 이 중첩도의 총합은 괄호열 "(())"에서 얻어진다.