結果
問題 | No.592 括弧の対応 (2) |
ユーザー |
|
提出日時 | 2017-11-10 22:31:16 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 225 ms / 5,000 ms |
コード長 | 2,477 bytes |
コンパイル時間 | 15,213 ms |
コンパイル使用メモリ | 384,388 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-24 12:38:11 |
合計ジャッジ時間 | 16,856 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 3 |
ソースコード
#[allow(unused_imports)]use std::cmp::{max, min, Ordering};#[allow(unused_imports)]use std::collections::{HashMap, HashSet, BinaryHeap};#[allow(unused_imports)]use std::iter::FromIterator;#[allow(unused_imports)]use std::io::stdin;mod util {use std::io::stdin;use std::str::FromStr;use std::fmt::Debug;#[allow(dead_code)]pub fn line() -> String {let mut line: String = String::new();stdin().read_line(&mut line).unwrap();line.trim().to_string()}#[allow(dead_code)]pub fn gets<T: FromStr>() -> Vec<T>where<T as FromStr>::Err: Debug,{let mut line: String = String::new();stdin().read_line(&mut line).unwrap();line.split_whitespace().map(|t| t.parse().unwrap()).collect()}}#[allow(unused_macros)]macro_rules! get {($t:ty) => {{let mut line: String = String::new();stdin().read_line(&mut line).unwrap();line.trim().parse::<$t>().unwrap()}};($($t:ty),*) => {{let mut line: String = String::new();stdin().read_line(&mut line).unwrap();let mut iter = line.split_whitespace();($(iter.next().unwrap().parse::<$t>().unwrap(),)*)}};($t:ty; $n:expr) => {(0..$n).map(|_|get!($t)).collect::<Vec<_>>()};($($t:ty),*; $n:expr) => {(0..$n).map(|_|get!($($t),*)).collect::<Vec<_>>()};($t:ty ;;) => {{let mut line: String = String::new();stdin().read_line(&mut line).unwrap();line.split_whitespace().map(|t| t.parse::<$t>().unwrap()).collect::<Vec<_>>()}};}#[allow(unused_macros)]macro_rules! debug {($($a:expr),*) => {println!(concat!($(stringify!($a), " = {:?}, "),*), $($a),*);}}fn main() {let n = get!(usize);let s: Vec<char> = util::line().chars().collect();let mut stack = Vec::new();let mut ans = vec![0; n];for (&c, i) in s.iter().zip(1..) {if c == '(' {stack.push(i);} else {let p = stack.pop().unwrap();ans[i - 1] = p;ans[p - 1] = i;}}for &i in &ans {println!("{}", i);}}