Submission #43301555


Source Code Expand

use proconio::{input, marker::Chars};

fn main() {
    input! {
        n: usize,
        s: Chars,
    }

    let modp = 1_000_000_007_usize;
    let mut dp = vec![1_usize; n];
    for (i, s_i) in s.iter().copied().enumerate() {
        let mut next = vec![0_usize; n];
        let c = std::iter::once(0)
            .chain(dp.iter().scan(0, |acc, &i| {
                *acc += i;
                Some(*acc)
            }))
            .collect::<Vec<usize>>();
        for j in 0..n - i {
            if s_i == '<' {
                next[j] += c[n - i] - c[j + 1];
                next[j] %= modp;
            } else {
                next[j] += c[j + 1] - c[0];
                next[j] %= modp;
            }
        }
        dp = next;
    }

    let ans = dp[0];
    println!("{}", ans);
}

Submission Info

Submission Time
Task T - Permutation
User bouzuya
Language Rust (1.42.0)
Score 100
Code Size 796 Byte
Status AC
Exec Time 38 ms
Memory 2236 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 17
Set Name Test Cases
All 0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13
Case Name Status Exec Time Memory
0_00 AC 1 ms 2088 KiB
0_01 AC 1 ms 2020 KiB
0_02 AC 2 ms 1988 KiB
1_00 AC 1 ms 2072 KiB
1_01 AC 1 ms 2012 KiB
1_02 AC 36 ms 2128 KiB
1_03 AC 35 ms 2144 KiB
1_04 AC 36 ms 2132 KiB
1_05 AC 38 ms 2124 KiB
1_06 AC 34 ms 2060 KiB
1_07 AC 35 ms 2200 KiB
1_08 AC 29 ms 2112 KiB
1_09 AC 34 ms 2100 KiB
1_10 AC 31 ms 2236 KiB
1_11 AC 38 ms 2084 KiB
1_12 AC 34 ms 2108 KiB
1_13 AC 35 ms 2212 KiB