結果

問題 No.1172 Add Recursive Sequence
ユーザー akakimidoriakakimidori
提出日時 2021-05-06 02:33:17
言語 Rust
(1.77.0 + proconio)
結果
TLE  
実行時間 -
コード長 1,378 bytes
コンパイル時間 13,225 ms
コンパイル使用メモリ 382,644 KB
実行使用メモリ 14,024 KB
最終ジャッジ日時 2024-09-13 18:56:07
合計ジャッジ時間 22,162 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
11,768 KB
testcase_01 AC 1 ms
6,812 KB
testcase_02 AC 1 ms
6,940 KB
testcase_03 AC 1 ms
6,940 KB
testcase_04 AC 1 ms
6,944 KB
testcase_05 AC 1 ms
6,944 KB
testcase_06 AC 1 ms
6,944 KB
testcase_07 AC 2 ms
6,940 KB
testcase_08 AC 2 ms
6,940 KB
testcase_09 AC 2 ms
6,940 KB
testcase_10 AC 35 ms
6,940 KB
testcase_11 AC 31 ms
6,944 KB
testcase_12 AC 124 ms
6,940 KB
testcase_13 AC 113 ms
6,940 KB
testcase_14 AC 1,568 ms
6,940 KB
testcase_15 TLE -
testcase_16 -- -
testcase_17 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

fn read() -> (usize, Vec<u64>, Vec<u64>, Vec<(usize, usize)>) {
    let mut s = String::new();
    use std::io::Read;
    std::io::stdin().read_to_string(&mut s).unwrap();
    let mut it = s.trim().split_whitespace();
    let mut next = || it.next().unwrap().parse::<usize>().unwrap();
    let k = next();
    let n = next();
    let m = next();
    let mut a = vec![0; k];
    for a in a.iter_mut() {
        *a = next() as u64;
    }
    let mut c = vec![0; k];
    for c in c.iter_mut() {
        *c = next() as u64;
    }
    let mut p = vec![(0, 0); m];
    for p in p.iter_mut() {
        p.0 = next();
        p.1 = next();
    }
    (n, a, c, p)
}

fn run() {
    let (n, a, c, p) = read();
    const MOD: u64 = 1_000_000_007;
    let mut dp = vec![0; n.max(a.len())];
    for (i, a) in a.iter().enumerate() {
        dp[i] = *a;
    }
    for i in a.len()..n {
        let mut s = 0;
        for (dp, c) in dp[..i].iter().rev().zip(&c) {
            s = (s + *c * *dp) % MOD;
        }
        dp[i] = s;
    }
    let mut ans = vec![0; n];
    for (l, r) in p {
        for (ans, dp) in ans[l..r].iter_mut().zip(&dp) {
            *ans += *dp;
        }
    }
    use std::io::Write;
    let out = std::io::stdout();
    let mut out = std::io::BufWriter::new(out.lock());
    for a in ans {
        writeln!(out, "{}", a % MOD).ok();
    }
}

fn main() {
    run();
}
0