Submission #2559665


Source Code Expand

#include <iostream>
#include <vector>
#include <string>
#include <stack>

using namespace std;

int main() {
    int n;
    cin >> n;
    string s;
    cin >> s;
    //スタックに積むのは(のみ
    //)を読み込んだときはスタックの先頭が(の時(を削除する
    //)を読み込んだ時(がない場合その連続数をカウントする
    //その連続数分(を先頭に結合する
    //最後まで読み込んだら残っている要素分)を末尾に結合する
    string result = s;
    stack<char> stack1;
    int count = 0;
    for(int i = 0; i < s.size(); i++)
    {
        if(s[i] == '(')
        {
            stack1.push('(');
        }else{
            if(!stack1.empty())
            {
                stack1.pop();
                if(count != 0)
                {
                    for(int j = 0; j < count; j++)
                    {
                        result = "(" + result;
                    }
                    count = 0;
                }
            }else{
                count++;
            }
        }
    }
    for(int i = 0; i < count; i++)
    {
        result = "(" + result;
    }
    for(int i = 0; i < stack1.size(); i++)
    {
        result += ")";
    }
    cout << result << endl;
    return 0;
}

Submission Info

Submission Time
Task D - Insertion
User umisan
Language C++14 (GCC 5.4.1)
Score 400
Code Size 1334 Byte
Status AC
Exec Time 2 ms
Memory 256 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 12
Set Name Test Cases
Sample s1.txt, s2.txt, s3.txt
All in1.txt, in2.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, s1.txt, s2.txt, s3.txt
Case Name Status Exec Time Memory
in1.txt AC 1 ms 256 KB
in2.txt AC 1 ms 256 KB
in3.txt AC 1 ms 256 KB
in4.txt AC 1 ms 256 KB
in5.txt AC 1 ms 256 KB
in6.txt AC 2 ms 256 KB
in7.txt AC 1 ms 256 KB
in8.txt AC 1 ms 256 KB
in9.txt AC 1 ms 256 KB
s1.txt AC 1 ms 256 KB
s2.txt AC 1 ms 256 KB
s3.txt AC 1 ms 256 KB