zoukankan      html  css  js  c++  java
  • 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.

    Sample test(s)
    input
    (((#)((#)
    output
    1
    2
    input
    ()((#((#(#()
    output
    2
    2
    1
    input
    #
    output
    -1
    input
    (#)
    output
    -1
    Note

    |s| denotes the length of the string s.

    思路:先把 ) 给匹配了,然后匹配 # ,如果不是最后一个# ,那么就只给它匹配一个。。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    #include<set>
    #include<map>
    #include<stack>
    #include<cmath>
    #define LL long long
    #define maxn 100010
    #define eps 1e-9
    using namespace std;
    
    bool vi[maxn] ;
    char a[maxn] ;
    int ans[maxn] ;
    stack<int>ss;
    int main()
    {
        int i,n,m,j,k,id;
        int T,case1=0,len ;
        while(scanf("%s",a+1) != EOF)
        {
            n = strlen(a+1);
            while(!ss.empty())ss.pop();
            memset(vi,0,sizeof(vi)) ;
            bool flag=false;
            for( i = 1 ; i <= n ;i++)
            {
                if(a[i]=='(')
                {
                    ss.push(i) ;
                }
                else if(a[i]==')')
                {
                    if(ss.empty())
                    {
                        flag=true;
                        break ;
                    }
                    k=ss.top();
                    ss.pop();
                    vi[k]=1;
                }
                else if(a[i]=='#') id=i;
            }
            if(flag)
            {
                puts("-1") ;
                continue ;
            }
            int cnt=0;
            len=0;
            for( i = 1 ; i <= n ;i++)if(!vi[i]&&a[i] != ')')
            {
                if(a[i]=='(')cnt++;
                else if(a[i]=='#')
                {
                    if(cnt==0)
                    {
                        flag=true;
                        break ;
                    }
                    else {
                            if(i==id)ans[len++]=cnt,cnt=0;
                            else ans[len++]=1;
                            if(cnt)cnt--;
                    }
                }
            }
    
            if(flag||cnt>0)puts("-1") ;
            else
            {
                if(len)cout<<ans[0]<<endl;
                for( i = 1 ; i < len ;i++)
                    cout << ans[i] << endl;
            }
        }
        return 0 ;
    }
    View Code
  • 相关阅读:
    poj2104 Kth-Number
    bzoj2120 数颜色
    hdu5145 NPY and girls
    bzoj2734 集合选数
    bzoj3732 NetWork
    bzoj2152 聪聪可可
    hdu2036(多边形面积)
    超大次幂思路
    hdu 2030 统计汉字个数
    Hibernate 配置文件与映射文件 总结
  • 原文地址:https://www.cnblogs.com/20120125llcai/p/4162447.html
Copyright © 2011-2022 走看看