Codeforces : 495C Treasure

This one is one of my favorite. 🙂


/*
User ID: Tanmoy_Datta
Link : http://codeforces.com/contest/495/problem/C
*/

#include <bits/stdc++.h>

#define pii pair <int,int>
#define sc scanf
#define pf printf
#define Pi 2*acos(0.0)
#define ms(a,b) memset(a, b, sizeof(a))
#define pb(a) push_back(a)
#define MP make_pair
#define oo 1<<29
#define dd double
#define ll long long
#define EPS 10E-10
#define ff first
#define ss second
#define MAX 10000
#define SZ(a) (int)a.size()
#define getint(a) scanf("%d",&a)
#define loop(i,n) for(int i=0;i<n;i++)
#define all(a) a.begin(),a.end()
#define intlim 2147483648
#define inf 1000000
#define rtintlim 46340
#define llim 9223372036854775808
#define rtllim 3037000499
#define ull unsigned long long
#define I int

using namespace std;

int main()
{
    ///freopen("in.txt","r",stdin);
    ///freopen("out.txt","w",stdout);
    int c,d,a,b;
    c=d=a=b=0;
    string str;
    cin>>str;
    int len=SZ(str);
    for(int i=0; i<len; i++)
    {
        if(str[i]=='(')
        {
            a++;
            c++;
        }
        if(str[i]==')')
        {
            b++;
            if(c!=0)
                c--;
        }
        if(str[i]=='#')
        {
            d++;
            c=0;
        }
        if(b+d>a)
        {
            cout<<-1<<endl;
            return 0;
        }
    }

    if(c>0)
    {
        cout<<-1<<endl;
        return 0;
    }

    for(int i=1; i<d; i++)
    {
        cout<<1<<endl;
        b++;
    }
    cout<<a-b<<endl;
    return 0;
}

Advertisements