比赛 ?板子大赛 评测结果 AAAAA
题目名称 括号匹配 最终得分 100
用户昵称 小福鑫 运行时间 1.020 s
代码语言 C++ 内存使用 23.43 MiB
提交时间 2026-01-17 13:10:04
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int T,dp,t,mx,f;
string s;
stack<int> st;
map<char,int>mp; 
int main(){
    freopen("kakko.in","r",stdin);
    freopen("kakko.out","w",stdout);
    mp['(']=1,mp[')']=9,mp['[']=2,mp[']']=8,mp['{']=3,mp['}']=7,mp['<']=4,mp['>']=6;
    mp['/']=-1,mp['#']=-2,mp['@']=-4,mp['?']=-8;
    mp['\\']=10,mp['*']=20,mp['&']=40,mp['!']=80;
    cin>>T;
    while(T--){
        dp=t=mx=0;
        f=1;
        cin>>s;
        for(int i=0;i<s.size();i++){
            if(mp[s[i]]<5){
                if(mp[s[i]]>0){
                    st.push(mp[s[i]]);
                    dp++;
                    if(dp>mx){
                        mx=dp;
                        t=1;
                    }
                    else if(dp==mx){
                        t++;
                    }
                } 
                else{
                    int q=-mp[s[i]];
                    for(int i=1;i<=q;i++){
                        st.push(-1);
                        dp++;
                        if(dp>mx){
                            mx=dp;
                            t=1;
                        }
                        else if(dp==mx){
                            t++;
                        }
                    }
                }
            }
            else{
                if(mp[s[i]]<10){
                    if(st.empty()||(st.top()+mp[s[i]]!=10&&st.top()>0)){
                        cout<<"FALSE"<<endl;
                        f=0;
                        break;
                    }
                    else{
                        st.pop();
                        dp--;
                    }
                }
                else{
                    int q=mp[s[i]]/10;
                    if(dp<q){
                        cout<<"FALSE"<<endl;
                        f=0;
                        break;
                    }
                    for(int j=1;j<=q;j++){
                        st.pop();
                        dp--;
                    }
                }
            }
        }
        if(!st.empty()&&f){
            cout<<"FALSE"<<endl;
            f=0;
        }
        while(!st.empty()){
            st.pop();
        }
        if(f) cout<<"TRUE "<<mx<<" "<<t<<endl;
    }
    return 0;
}