結果
| 問題 | 
                            No.45 回転寿司
                             | 
                    
| ユーザー | 
                             | 
                    
| 提出日時 | 2020-05-24 12:38:38 | 
| 言語 | Rust  (1.83.0 + proconio)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 1 ms / 5,000 ms | 
| コード長 | 701 bytes | 
| コンパイル時間 | 13,267 ms | 
| コンパイル使用メモリ | 379,348 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-10-11 04:00:26 | 
| 合計ジャッジ時間 | 14,546 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 30 | 
ソースコード
use std::cmp::max;
fn main() {
    let mut n = String::new();
    std::io::stdin().read_line(&mut n).ok();
    let n: usize = n.trim().parse().unwrap();
    let mut v = String::new();
    std::io::stdin().read_line(&mut v).ok();
    let v: Vec<usize> = v.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();
    if n == 1 {
        println!("{}", v[0]);
        return;
    }
    if n == 2 {
        println!("{}", max(v[0], v[1]));
        return;
    }
    let mut dp: Vec<usize> = vec![0; n];
    dp[0] = v[0];
    dp[1] = v[1];
    dp[2] = max(v[0] + v[2], v[1]);
    for i in 3..n {
        dp[i] = max(dp[i-3]+v[i], max(dp[i-2]+v[i], dp[i-1]));
    }
    println!("{}", dp[n-1]);
}