結果

問題 No.22 括弧の対応
ユーザー @abcde@abcde
提出日時 2019-02-03 16:11:53
言語 C++11
(gcc 11.4.0)
結果
RE  
実行時間 -
コード長 1,497 bytes
コンパイル時間 1,086 ms
コンパイル使用メモリ 147,968 KB
実行使用メモリ 4,380 KB
最終ジャッジ日時 2023-08-22 16:43:43
合計ジャッジ時間 2,521 ms
ジャッジサーバーID
(参考情報)
judge15 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
4,376 KB
testcase_01 AC 1 ms
4,380 KB
testcase_02 AC 2 ms
4,376 KB
testcase_03 AC 4 ms
4,376 KB
testcase_04 AC 2 ms
4,376 KB
testcase_05 AC 2 ms
4,380 KB
testcase_06 AC 3 ms
4,380 KB
testcase_07 AC 2 ms
4,376 KB
testcase_08 AC 2 ms
4,376 KB
testcase_09 AC 2 ms
4,376 KB
testcase_10 AC 3 ms
4,376 KB
testcase_11 AC 2 ms
4,376 KB
testcase_12 AC 2 ms
4,376 KB
testcase_13 RE -
testcase_14 RE -
testcase_15 AC 3 ms
4,376 KB
testcase_16 AC 3 ms
4,376 KB
testcase_17 AC 1 ms
4,376 KB
testcase_18 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;

struct bracket {
    char c;
    int  i;
};

int main() {
    
    // 1. 入力情報取得.
    int N, K;
    string S;
    cin >> N >> K >> S;

    // 2. vectorに保管.
    vector<bracket> v;
    for(int i = 0; i < N; i++) {
        bracket b;
        b.c = S[i];
        b.i = i;
        v.push_back(b);
    }
    
    // 3. K 番目の文字と対応する文字の箇所の番目は?
    int ans = -1;
    while(!v.empty()){
        // 終了条件確認
        if(ans != -1) break;
        // 前回出現した括弧情報.
        bracket bef;
        bef.c = '#';
        bef.i = -1;
        for(auto &p : v){
            // 今回出現の括弧情報のインデックス.
            size_t index = &p - &v[0];
            // 今回出現した括弧情報.
            bracket cur = p;
            // 対応する括弧を確認.
            if(bef.c == '(' && cur.c == ')'){
                if(cur.i == K - 1) ans = bef.i;
                if(bef.i == K - 1) ans = cur.i;
                // 対応する括弧を削除.
                v.erase(v.begin() + index - 1, v.begin() + index + 1);
                // cout << "bef: " << bef.c << " " << bef.i << "  cur: " << cur.c << " " << cur.i << endl;
            }
            // 終了条件確認
            if(ans != -1) break;
            // 前回情報更新.
            bef = cur;
        }
    }
    
    // 4. 出力.
    ans++;
    cout << ans << endl;
    return 0;
    
}
0