Codeforces Round #282 (Div. 1) A. Treasure

A. Treasure
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Malek has recently found a treasure map. While he was looking for a treasure he found a locked door. There was a string s written on the door consisting of characters '(', ')' and '#'. Below there was a manual on how to open the door. After spending a long time Malek managed to decode the manual and found out that the goal is to replace each '#' with one or more ')' characters so that the final string becomes beautiful.

Below there was also written that a string is called beautiful if for each i (1 ≤ i ≤ |s|) there are no more ')' characters than '(' characters among the first i characters of s and also the total number of '(' characters is equal to the total number of ')' characters.

Help Malek open the door by telling him for each '#' character how many ')' characters he must replace it with.

Input

The first line of the input contains a string s (1 ≤ |s| ≤ 105). Each character of this string is one of the characters '(', ')' or '#'. It is guaranteed that s contains at least one '#' character.

Output

If there is no way of replacing '#' characters which leads to a beautiful string print  - 1. Otherwise for each character '#' print a separate line containing a positive integer, the number of ')' characters this character must be replaced with.

If there are several possible answers, you may output any of them.

Examples
input
Copy
(((#)((#)
output
1
2
input
Copy
()((#((#(#()
output
2
2
1
input
Copy
#
output
-1
input
Copy
(#)
output
-1
Note

|s| denotes the length of the string s.

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<stack>
#define ll long long
#define inf 0x3f3f3f3f
#define maxn 100005
using namespace std;
string s;
int m,l,r;
int main(){
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(s[i]=='('){l++,r++;}
        else {
            l--;if(r>0)r--;
            if(l<0){cout<<-1<<endl;return 0;}
            if(s[i]=='#'){r=0,m++;}
        }
    }
    if(r!=0){cout<<-1<<endl;return 0;}
    for(int i=0;i<m-1;i++){
        cout<<1<<endl;
    }cout<<l+1<<endl;
}


posted @ 2018-03-30 21:24  _大美  阅读(148)  评论(0编辑  收藏  举报