結果
問題 | No.22 括弧の対応 |
ユーザー | @abcde |
提出日時 | 2019-02-03 16:11:53 |
言語 | C++11 (gcc 11.4.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,497 bytes |
コンパイル時間 | 1,268 ms |
コンパイル使用メモリ | 163,648 KB |
実行使用メモリ | 13,888 KB |
最終ジャッジ日時 | 2024-05-09 22:31:59 |
合計ジャッジ時間 | 7,834 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 4 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 2 ms
5,376 KB |
testcase_06 | AC | 2 ms
5,376 KB |
testcase_07 | AC | 2 ms
5,376 KB |
testcase_08 | AC | 2 ms
5,376 KB |
testcase_09 | AC | 2 ms
5,376 KB |
testcase_10 | AC | 3 ms
5,376 KB |
testcase_11 | AC | 2 ms
5,376 KB |
testcase_12 | AC | 2 ms
5,376 KB |
testcase_13 | TLE | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
ソースコード
#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; }