結果
| 問題 |
No.22 括弧の対応
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-11-23 18:08:02 |
| 言語 | C90 (gcc 12.3.0) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 5,000 ms |
| コード長 | 867 bytes |
| コンパイル時間 | 140 ms |
| コンパイル使用メモリ | 21,888 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-20 07:05:05 |
| 合計ジャッジ時間 | 786 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 19 |
コンパイルメッセージ
main.c: In function ‘main’:
main.c:17:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
17 | scanf("%d %d", &input_n, &input_k);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.c:24:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
24 | scanf("%s", ps);
| ^~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int left;
int right;
}t_mate;
int main(){
int input_n, input_k;
char *ps;
t_mate *pmate;
int i, j, k;
int checkmate;
int ans;
scanf("%d %d", &input_n, &input_k);
ps=(char*)malloc(input_n*sizeof(char));
pmate=(t_mate*)malloc(input_n/2*sizeof(t_mate));
for(i=0; i<input_n/2; ++i){
pmate[i].left=-1;
pmate[i].right=-1;
}
scanf("%s", ps);
j=0;
k=0;
for(i=0; i<input_n; ++i){
switch(ps[i]){
case '(':
pmate[j].left=i;
if(i==input_k-1)checkmate=j;
++j;
break;
case ')':
k=j-1;
while(pmate[k].right!=-1)--k;
pmate[k].right=i;
if(i==input_k-1)checkmate=k;
break;
}
}
ans = (pmate[checkmate].left==input_k-1) ? pmate[checkmate].right+1 : pmate[checkmate].left+1;
printf("%d\n", ans);
return 0;
}