Submission #1020203

#TimeUsernameProblemLanguageResultExecution timeMemory
1020203DucNguyen2007Zagrade (COI17_zagrade)C++14
30 / 100
46 ms14780 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pll pair<ll,ll>
#define fi first
#define se second
const int maxN=3e5+5;
const ll inf=2e18;
int n;
ll dp[maxN+1];
string s;
vector<int> adj[maxN+1];
stack<int> st;
void clr()
{
    while(!st.empty())
    {
        st.pop();
    }
}
int main()
{
    //freopen("zagrade.inp","r",stdin);
    //freopen("zagrade.out","w",stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>s;
    s=" "+s;
    for(int i=1;i<n;i++)
    {
        int u,v;
        cin>>u>>v;
    }
    for(int i=1;i<=n;i++)
    {
        if(s[i]=='(')
        {
            st.push(i);
        }
        else
        {
            if(!st.empty()&&s[st.top()]=='(')
            {
                dp[i]=dp[st.top()-1]+1;
                st.pop();
            }
            else clr();
        }
    }
    ll res=0;
    for(int i=1;i<=n;i++)
    {
        res+=dp[i];
    }
    memset(dp,0,sizeof(dp));
    clr();
    for(int i=1;i<=n;i++)
    {
        if(s[i]==')')
        {
            st.push(i);
        }
        else
        {
            if(!st.empty()&&s[st.top()]==')')
            {
                dp[i]=dp[st.top()-1]+1;
                st.pop();
            }
            else clr();
        }
    }
    for(int i=1;i<=n;i++)
    {
        res+=dp[i];
    }
    cout<<res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...