답안 #1118034

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1118034 2024-11-24T18:37:01 Z vjudge1 괄호 문자열 (CEOI16_match) C++17
10 / 100
5 ms 336 KB
#pragma GCC optimize("O3")
#include<bits/stdc++.h>
#define ll long long
#define endl "\n"
#define AI ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
vector<ll>val;
vector<vector<ll>>edge;
vector<ll>check;
ll k,c=0;
int main()
{
    AI
    //freopen(“kangaroo.in”, “r”, stdin);
    // freopen(“kangaroo.out”, “w”, stdout);
    ll i,j,k;
    string a;
    cin>>a;
    if(a.size()%2)
    {
        cout<<-1;
        return 0;
    }//1->( 0->)
    ll n=a.size();
    string str=" ";
    for(i=(1<<(n/2))-1;i<(1<<n);i++)
    {
        ll bal=0;
        k=1;
        for(j=0;j<n;j++)
        {
            if(i&k)
            bal++;
            else
            bal--;
            if(bal<0)
            break;
            k=(k<<1);
        }
        if(bal!=0)
        continue;
        stack<ll>stm;
        stack<ll>sta;
        char x;
        bool bo=true;
        k=1;
        for(j=0;j<n;j++)
        {
           // cout<<k;
            if(i&k)
            x='(';
            else
            x=')';
            k=(k<<1);
            if(!stm.size())
            {
                stm.push(x);
                sta.push(a[j]);
                continue;
            }
            if(stm.top()=='(' and x==')' and sta.top()!=a[j])
            {
                bo=false;
                break;
            }
            else if(stm.top()=='(' and x==')' and sta.top()==a[j])
            {
                sta.pop();
                stm.pop();
            }
            else
            {
                sta.push(a[j]);
                stm.push(x);
            }
        }
        if(stm.size() or sta.size() or !bo)
        continue;
        else
        {
            k=1;
            string xx="";
            for(j=0;j<n;j++)
            {
                if(i&k)
                xx+="(";
                else
                xx+=")";
                k=(k<<1);
            }
            if(str==" ")
            str=xx;
            else
            str=min(str,xx);
        }
    }
    if(str==" ")
    cout<<-1;
    else
    cout<<str;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 5 ms 336 KB Output is correct
3 Correct 2 ms 336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 5 ms 336 KB Output is correct
3 Correct 2 ms 336 KB Output is correct
4 Incorrect 1 ms 336 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 5 ms 336 KB Output is correct
3 Correct 2 ms 336 KB Output is correct
4 Incorrect 1 ms 336 KB Output isn't correct
5 Halted 0 ms 0 KB -