結果
| 問題 |
No.22 括弧の対応
|
| コンテスト | |
| ユーザー |
@abcde
|
| 提出日時 | 2019-02-03 16:11:53 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,497 bytes |
| コンパイル時間 | 1,159 ms |
| コンパイル使用メモリ | 162,932 KB |
| 実行使用メモリ | 10,148 KB |
| 最終ジャッジ日時 | 2024-12-17 17:00:47 |
| 合計ジャッジ時間 | 14,000 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 RE * 1 TLE * 2 |
ソースコード
#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;
}
@abcde