結果

問題 No.3067 +10 Seconds Clock
ユーザー srtry
提出日時 2025-04-27 23:20:46
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 27 ms / 2,000 ms
コード長 984 bytes
コンパイル時間 14,347 ms
コンパイル使用メモリ 376,028 KB
実行使用メモリ 9,216 KB
最終ジャッジ日時 2025-04-27 23:21:03
合計ジャッジ時間 16,545 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 23
権限があれば一括ダウンロードができます
コンパイルメッセージ
warning: variable `N` should have a snake case name
 --> src/main.rs:6:9
  |
6 |         N:usize, T:usize,
  |         ^ help: convert the identifier to snake case: `n`
  |
  = note: `#[warn(non_snake_case)]` on by default

warning: variable `T` should have a snake case name
 --> src/main.rs:6:18
  |
6 |         N:usize, T:usize,
  |                  ^ help: convert the identifier to snake case: `t`

warning: variable `K` should have a snake case name
 --> src/main.rs:8:9
  |
8 |         K:usize,
  |         ^ help: convert the identifier to snake case (notice the capitalization): `k`

ソースコード

diff #

use proconio::input;
use std::collections::HashSet;

fn main() {
    input!{
        N:usize, T:usize,
        mut t:[usize;N-1],
        K:usize,
        x:[usize;K]
    }

    t.insert(0,0);
    t.insert(1,0);
    let x:HashSet<usize> = HashSet::from_iter(x.iter().cloned());

    let mut cnt:isize = T.clone() as isize;
    let mut useble_clock:usize = 0;
    let mut ans:isize = 0;
    for i in 2..=N {
        // 地点iに行けるか否かの判定
        
        cnt -= t[i] as isize;
        if cnt <= 0 {
            if (-cnt)/10 + 1 > (useble_clock as isize) {
                ans = -1;
                break;
            } else {
                let use_clock:usize = (-cnt as usize)/10 + 1;
                useble_clock -= use_clock as usize;
                ans += use_clock as isize;
                cnt += 10*(use_clock as isize);
            }
        }
        if x.contains(&i) && cnt>0 {
            useble_clock += 1;
        }
    }
    println!("{}", ans);
}
0