結果
| 問題 |
No.22 括弧の対応
|
| コンテスト | |
| ユーザー |
HiroakiSoftware
|
| 提出日時 | 2014-11-01 04:19:22 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 1,008 bytes |
| コンパイル時間 | 1,132 ms |
| コンパイル使用メモリ | 68,924 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-20 06:53:58 |
| 合計ジャッジ時間 | 1,500 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 19 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:34:33: warning: ‘targetlevel’ may be used uninitialized in this function [-Wmaybe-uninitialized]
34 | if (level == targetlevel) {
| ^~
ソースコード
/*
yukicoder No.22
作成者:ヒロソフ
使用言語:C/C++
*/
#include <iostream>
#include <iomanip>
#include <stack>
#include <cstdio>
#include <cstring>
using namespace std;
int main(void) {
int N, K;
char *lpString;
cin >> N >> K;
K--;
lpString = new char[N + 1];
cin >> setw(N + 1) >> lpString;
if (*(lpString + K) == '(') {
//K番目が(の場合
int level = 0;
int targetlevel;
for (int i = 0; i < N; i++) {
if (*(lpString + i) == '(') {
level++;
if (i == K) {
targetlevel = level;
}
} else if (*(lpString + i) == ')') {
if (level == targetlevel) {
printf("%d\n", i + 1);
break;
}
level--;
}
}
} else {
//K番目が)の場合
stack<int> PosStack;
for (int i = 0; i < K ; i++) {
if (*(lpString + i) == '(') PosStack.push(i);
else if (*(lpString + i) == ')') PosStack.pop();
}
printf("%d\n", PosStack.top() + 1);
}
delete[]lpString;
return 0;
}
HiroakiSoftware