Submission #18719574


Source Code Expand

fn main() {
    let (r, w) = (std::io::stdin(), std::io::stdout());
    let mut sc = IO::new(r.lock(), w.lock());

    let mut stack = vec![];
    let mut size = 0;
    let q: usize = sc.read();
    let l: usize = sc.read();
    for _ in 0..q {
        let s: String = sc.read();
        match s.as_str() {
            "Push" => {
                let n: usize = sc.read();
                let m: i64 = sc.read();
                stack.push((n, m));
                size += n;
                if size > l {
                    println!("FULL");
                    return;
                }
            }
            "Pop" => {
                let mut pop: usize = sc.read();
                if size < pop {
                    println!("EMPTY");
                    return;
                }
                size -= pop;
                while let Some((count, m)) = stack.pop() {
                    if pop < count {
                        let add = count - pop;
                        stack.push((add, m));
                        pop = 0;
                    } else {
                        pop -= count;
                    }

                    if pop == 0 {
                        break;
                    }
                }

                if pop != 0 {
                    println!("EMPTY");
                    return;
                }
            }
            "Top" => {
                if stack.is_empty() {
                    println!("EMPTY");
                    return;
                }
                let top = stack[stack.len() - 1].1;
                println!("{}", top);
            }
            "Size" => {
                println!("{}", size);
            }
            _ => unreachable!(),
        }
    }
    println!("SAFE");
}

pub struct IO<R, W: std::io::Write>(R, std::io::BufWriter<W>);

impl<R: std::io::Read, W: std::io::Write> IO<R, W> {
    pub fn new(r: R, w: W) -> Self {
        Self(r, std::io::BufWriter::new(w))
    }
    pub fn write<S: ToString>(&mut self, s: S) {
        use std::io::Write;
        self.1.write_all(s.to_string().as_bytes()).unwrap();
    }
    pub fn read<T: std::str::FromStr>(&mut self) -> T {
        use std::io::Read;
        let buf = self
            .0
            .by_ref()
            .bytes()
            .map(|b| b.unwrap())
            .skip_while(|&b| b == b' ' || b == b'\n' || b == b'\r' || b == b'\t')
            .take_while(|&b| b != b' ' && b != b'\n' && b != b'\r' && b != b'\t')
            .collect::<Vec<_>>();
        unsafe { std::str::from_utf8_unchecked(&buf) }
            .parse()
            .ok()
            .expect("Parse error.")
    }
    pub fn vec<T: std::str::FromStr>(&mut self, n: usize) -> Vec<T> {
        (0..n).map(|_| self.read()).collect()
    }
    pub fn chars(&mut self) -> Vec<char> {
        self.read::<String>().chars().collect()
    }
}

Submission Info

Submission Time
Task B - 天下一後入れ先出しデータ構造
User kenkoooo
Language Rust (1.42.0)
Score 60
Code Size 2963 Byte
Status AC
Exec Time 124 ms
Memory 2404 KiB

Judge Result

Set Name small All
Score / Max Score 30 / 30 30 / 30
Status
AC × 29
AC × 64
Set Name Test Cases
small small/input_file_01, small/input_file_02, small/input_file_03, small/input_file_04, small/input_file_05, small/input_file_07, small/input_file_08, small/input_file_09, small/input_file_10, small/input_file_11, small/input_file_13, small/input_file_14, small/input_file_15, small/input_file_16, small/input_file_17, small/small_0, small/small_1, small/small_10, small/small_11, small/small_12, small/small_13, small/small_2, small/small_3, small/small_4, small/small_5, small/small_6, small/small_7, small/small_8, small/small_9
All large/input_file_06, large/input_file_12, large/input_file_18, large/input_file_19, large/input_file_20, large/input_file_21, large/input_file_22, large/input_file_23, large/input_file_24, large/input_file_25, large/input_file_26, large/input_file_27, large/input_file_28, large/input_file_29, large/input_file_30, large/input_file_31, large/input_file_32, large/input_file_33, large/input_file_34, large/input_file_35, large/input_file_36, large/input_file_37, large/input_file_38, large/input_file_39, large/input_file_40, large/input_file_41, large/input_file_42, large/input_file_43, large/input_file_44, large/input_file_45, large/input_file_46, large/input_file_47, large/input_file_48, large/input_file_49, large/input_file_50, small/input_file_01, small/input_file_02, small/input_file_03, small/input_file_04, small/input_file_05, small/input_file_07, small/input_file_08, small/input_file_09, small/input_file_10, small/input_file_11, small/input_file_13, small/input_file_14, small/input_file_15, small/input_file_16, small/input_file_17, small/small_0, small/small_1, small/small_10, small/small_11, small/small_12, small/small_13, small/small_2, small/small_3, small/small_4, small/small_5, small/small_6, small/small_7, small/small_8, small/small_9
Case Name Status Exec Time Memory
large/input_file_06 AC 12 ms 2300 KiB
large/input_file_12 AC 2 ms 2040 KiB
large/input_file_18 AC 2 ms 2128 KiB
large/input_file_19 AC 2 ms 2032 KiB
large/input_file_20 AC 1 ms 2044 KiB
large/input_file_21 AC 3 ms 2064 KiB
large/input_file_22 AC 2 ms 1968 KiB
large/input_file_23 AC 2 ms 2024 KiB
large/input_file_24 AC 15 ms 2084 KiB
large/input_file_25 AC 21 ms 1888 KiB
large/input_file_26 AC 16 ms 2008 KiB
large/input_file_27 AC 81 ms 1972 KiB
large/input_file_28 AC 74 ms 2172 KiB
large/input_file_29 AC 82 ms 2036 KiB
large/input_file_30 AC 45 ms 2020 KiB
large/input_file_31 AC 70 ms 2064 KiB
large/input_file_32 AC 9 ms 2036 KiB
large/input_file_33 AC 52 ms 2024 KiB
large/input_file_34 AC 18 ms 2404 KiB
large/input_file_35 AC 70 ms 2064 KiB
large/input_file_36 AC 68 ms 1996 KiB
large/input_file_37 AC 44 ms 2000 KiB
large/input_file_38 AC 35 ms 2056 KiB
large/input_file_39 AC 107 ms 2072 KiB
large/input_file_40 AC 26 ms 2108 KiB
large/input_file_41 AC 27 ms 2008 KiB
large/input_file_42 AC 124 ms 2056 KiB
large/input_file_43 AC 18 ms 2136 KiB
large/input_file_44 AC 43 ms 2032 KiB
large/input_file_45 AC 20 ms 1988 KiB
large/input_file_46 AC 25 ms 1948 KiB
large/input_file_47 AC 57 ms 2112 KiB
large/input_file_48 AC 52 ms 1900 KiB
large/input_file_49 AC 59 ms 2096 KiB
large/input_file_50 AC 18 ms 2316 KiB
small/input_file_01 AC 2 ms 2020 KiB
small/input_file_02 AC 2 ms 2044 KiB
small/input_file_03 AC 2 ms 2032 KiB
small/input_file_04 AC 1 ms 2036 KiB
small/input_file_05 AC 2 ms 2076 KiB
small/input_file_07 AC 1 ms 1948 KiB
small/input_file_08 AC 2 ms 2088 KiB
small/input_file_09 AC 2 ms 2056 KiB
small/input_file_10 AC 3 ms 2128 KiB
small/input_file_11 AC 2 ms 2032 KiB
small/input_file_13 AC 2 ms 2028 KiB
small/input_file_14 AC 2 ms 1952 KiB
small/input_file_15 AC 2 ms 2084 KiB
small/input_file_16 AC 3 ms 2072 KiB
small/input_file_17 AC 2 ms 2100 KiB
small/small_0 AC 2 ms 2060 KiB
small/small_1 AC 2 ms 1960 KiB
small/small_10 AC 2 ms 2088 KiB
small/small_11 AC 2 ms 2032 KiB
small/small_12 AC 2 ms 1996 KiB
small/small_13 AC 4 ms 2096 KiB
small/small_2 AC 2 ms 2016 KiB
small/small_3 AC 1 ms 2056 KiB
small/small_4 AC 2 ms 2016 KiB
small/small_5 AC 2 ms 2040 KiB
small/small_6 AC 1 ms 2056 KiB
small/small_7 AC 1 ms 2128 KiB
small/small_8 AC 1 ms 2072 KiB
small/small_9 AC 2 ms 2016 KiB