CF612C.Replace To Make Regular Bracket Sequence

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given string s consists of opening and closing brackets of four kinds <>, {}, [], (). There are two types of brackets: opening and closing. You can replace any bracket by another of the same type. For example, you can replace < by the bracket {, but you can't replace it by ) or >.

The following definition of a regular bracket sequence is well-known, so you can be familiar with it.

Let's define a regular bracket sequence (RBS). Empty string is RBS. Let _s_1 and _s_2 be a RBS then the strings <_s_1>_s_2, {_s_1}_s_2, [_s_1]_s_2, (_s_1)_s_2 are also RBS.

For example the string "[[(){}]<>]" is RBS, but the strings "[)()" and "][()()" are not.

Determine the least number of replaces to make the string s RBS.

给你一个字符串 ss,它由四种括号组成:<>、{}、[]、()。括号分为两类:左括号(opening)和右括号(closing)。你可以将任意一个括号替换成同类型的另一个括号。例如,你可以将 < 替换为 {,但不能将其替换为 ) 或 >。

以下是对“正则括号序列”(Regular Bracket Sequence, RBS)的经典定义,你可能已有所了解:

我们定义正则括号序列(RBS)如下:空字符串是 RBS;若 s1s_1 和 s2s_2 均为 RBS,则字符串 <s_1>s_2、{s_1}s_2、[s_1]s_2、(s_1)s_2 也均为 RBS。

例如,字符串 "[[(){}]<>" 是 RBS,但字符串 "[)()" 和 "][()()" 不是 RBS。

请确定使字符串 ss 成为 RBS 所需的最少替换次数。

输入格式

The only line contains a non empty string s, consisting of only opening and closing brackets of four kinds. The length of s does not exceed 106.

仅有一行,包含一个非空字符串 ss,该字符串仅由四种类型的括号(开括号和闭括号)组成。字符串 ss 的长度不超过 10610^6。

输出格式

If it's impossible to get RBS from s print Impossible.

Otherwise print the least number of replaces needed to get RBS from s.

如果无法从字符串 ss 得到合法括号序列(RBS),则输出 Impossible。

否则,输出将 ss 变为合法括号序列(RBS)所需的最少替换次数。

输入输出样例

  • 输入#1

    [&lt;}){}

    输出#1

    2
  • 输入#2

    {()}[]

    输出#2

    0
  • 输入#3

    ]]

    输出#3

    Impossible

输入解题思路,AI测评打分。不知道怎么写?

首页