ANARC09A - Seinfeld


I’m out of stories. For years I’ve been writing stories, some rather silly, just to make simple problems look difficult and complex problems look easy. But, alas, not for this one.

You’re given a non empty string made in its entirety from opening and closing braces. Your task is to find the minimum number of “operations” needed to make the string stable. The definition for being stable is as follows:

  1. An empty string is stable.
  2. If S is stable, then {S} is also stable.
  3. If S and T are both stable, then ST (the concatenation of the two) is also stable.

All of these strings are stable: {}, {}{}, and {{}{}}; But none of these: }{, {{}{, nor {}{.
The only operation allowed on the string is to replace an opening brace with a closing brace, or visa-versa.

Input

Your program will be tested on one or more data sets. Each data set is described on a single line. The line is a non-empty string of opening and closing braces and nothing else. No string has more than 2000 braces. All sequences are of even length.

The last line of the input is made of one or more ’-’ (minus signs.)

Output

For each test case, print the following line:

k. N

Where k is the test case number (starting at one,) and N is the minimum number of operations needed to convert the given string into a balanced one.

Example

Input:
}{
{}{}{}
{{{}
---

Output: 1. 2
2. 0
3. 1

hide comments
Waseem Ahmed: 2021-06-30 21:11:49

Simple problem suing stack. Hint : Eliminate all the matching braces and then consider the remaining braces. How many variations can you see?

As pointed out by others, be careful about the input. There are characters other than '{' and '}'. Filter them out.

tropo_sphere: 2021-06-27 09:08:00

im gettin wa looking fr a testcase

yasser1110: 2021-06-18 17:37:37

Downvoted the problem, simply because input consists of non brace characters, (maybe whitespaces), even though the question clearly says that only open and close braces are a part of the input. Also incorrectly tagged. Its not DP.

[NG]: Obviously there are EOLs, how would get "each data set is described on a single line" otherwise? My old Py solution uses straightforward line-based reading with no provisions for anything but braces.

For the algorithm to use, noone claims it "is" DP; it does happen to be one of ways to solve it though as comments indicate.

Last edit: 2021-06-19 00:31:31
saurabhs_09: 2021-06-14 14:08:01

what will be input format??

spojmagyan: 2021-05-29 17:12:03

if in input there is no k, how to display it ?

anupam_akib: 2021-05-19 21:08:03

AC in one go using greedy approach. Can someone please give me some hints for solving it in DP?

sharma_swati: 2021-05-09 16:51:54

does it contain only curly braces or all other types of braces also?

jajopi: 2021-03-24 17:28:43

Nice simple problem, there is no need for DP neither Stack (just think about how many different things would you put inside). The hardest part is to not forget the output format :D

toki_64_vaiya: 2021-02-11 15:05:41

Gave me TLE.
I have used stack and no internal looping except for the main loop for taking input :/

aniketakgec: 2020-12-23 11:29:07

@amit1_sharma, you just have to change 2nd bracket(opened one)to closing one and you'll have the string {}{} which is stable thus the answer should be 1, not 2 (as given in the test case).


Added by:Mohammad Kotb
Date:2009-11-28
Time limit:3.236s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64 BASH JS-RHINO
Resource:http://www.icpc-anarc.org