CF847C Sum of Nestings

题目描述

我们定义一个括号序列是规则的当且仅当存在某种方式可以将字符 `+` 和 `1` 插入其中使得其成为一个合法的表达式。比如 `(()())` 是规则的因为我们可以将它变成 `((1+1)+(1+1))` 的形式,而这个形式是一个合法的表达式。此外,`()()()`、`(())`、`()` 也是规则的括号序列。相反,`)(`、`(()`、`())(()` 不是规则的括号序列。 在这个问题中,你被给予了两个数 $n$ 和 $k$,你的任务是构建一个规则的括号序列,使得它恰好含有 $n$ 对括号并且恰好含有 $k$ 对嵌套。 比如,`()(())` 含有 $3$ 对括号且它的嵌套对数为 $1$,而`(((())))`含有 $4$ 对括号且它的嵌套对数为 $6=3+2+1$。

输入格式

第一行包含两个整数 $n$ 和 $k(1\le n\le 3\times10^5,0\le k\le10^{18})$,分别表示括号的对量和需要的嵌套对数。

输出格式

输出满足要求的、由圆括号组成的规则括号序列。 如果不存在解,则输出 `Impossible`。

说明/提示

第一个样例已在题面中进行了说明。 第二个样例的答案是 `(((())))`。第一个左括号的嵌套深度为 $0$,第二个为 $1$,第三个为 $2$,第四个为 $3$。因此总嵌套深度之和等于 $0+1+2+3=6$。 第三个样例中无法构造出合法的括号序列,因为两个左括号所能达到的最大总嵌套深度之和为 $1$。这个总嵌套深度是在序列 `(())` 中取得的。