結果

問題 No.22 括弧の対応
ユーザー satanicsatanic
提出日時 2015-11-23 18:08:02
言語 C90
(gcc 11.4.0)
結果
AC  
実行時間 1 ms / 5,000 ms
コード長 867 bytes
コンパイル時間 193 ms
コンパイル使用メモリ 24,736 KB
実行使用メモリ 4,380 KB
最終ジャッジ日時 2023-09-27 12:58:24
合計ジャッジ時間 1,375 ms
ジャッジサーバーID
(参考情報)
judge12 / judge14
このコードへのチャレンジ(β)

テストケース

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

ソースコード

diff #

#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;
}
0