結果
| 問題 |
No.22 括弧の対応
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-02-08 22:58:41 |
| 言語 | OCaml (5.2.1) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 801 bytes |
| コンパイル時間 | 251 ms |
| コンパイル使用メモリ | 21,704 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-08 23:46:35 |
| 合計ジャッジ時間 | 1,112 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 19 |
ソースコード
type paren = Open | Close
let solve position parens =
let base_paren = String.get parens (position - 1) in
let start, manipulator, initial = match base_paren with
| '(' -> (position, succ, 1)
| ')' -> (position - 2, pred, -1)
| _ -> failwith ""
in
let rec loop next correspond pos =
if correspond = 0 then pos + 1
else let paren = String.get parens next in
match paren with
| '(' -> loop (manipulator next) (succ correspond) next
| ')' -> loop (manipulator next) (pred correspond) next
| _ -> failwith ""
in
loop start initial position
let () =
let info = read_line () in
let _, target = Scanf.sscanf info "%d %d" (fun len target -> (len, target)) in
let parens = read_line () in
Printf.printf "%d\n" (solve target parens)