結果
問題 | No.1150 シュークリームゲーム(Easy) |
ユーザー | phspls |
提出日時 | 2020-08-08 23:39:26 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 7 ms / 2,000 ms |
コード長 | 1,448 bytes |
コンパイル時間 | 12,129 ms |
コンパイル使用メモリ | 391,880 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-02 09:09:32 |
合計ジャッジ時間 | 14,856 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 43 |
ソースコード
use std::cmp::{max, min}; fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: usize = n.trim().parse().unwrap(); let mut st = String::new(); std::io::stdin().read_line(&mut st).ok(); let st: Vec<usize> = st.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let s = st[0] - 1; let t = st[1] - 1; let mut a = String::new(); std::io::stdin().read_line(&mut a).ok(); let a: Vec<usize> = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let summary: isize = a.iter().map(|&i| i as isize).sum(); let diff = max(s, t) - min(s, t) - 1; let mut player_a = 0isize; if s > t { let idx = s - (diff+1) / 2; for i in 0..n/2+n%2 { player_a += a[(idx+i) % n] as isize; } if diff % 2 == 1 && n % 2 == 0 { let mut temp = player_a; temp -= a[idx] as isize; temp += a[(idx+n/2+n%2)%n] as isize; player_a = max(player_a, temp); } } else { let idx = s + (diff+1) / 2; for i in 0..n/2+n%2 { player_a += a[(idx+n-i) % n] as isize; } if diff % 2 == 1 && n % 2 == 0 { let mut temp = player_a; temp -= a[idx] as isize; temp += a[(idx+n/2+n%2)%n] as isize; player_a = max(player_a, temp); } } println!("{}", player_a * 2 - summary); }