結果
問題 | No.1708 Quality of Contest |
ユーザー |
|
提出日時 | 2024-08-13 10:57:25 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 57 ms / 2,000 ms |
コード長 | 1,147 bytes |
コンパイル時間 | 22,663 ms |
コンパイル使用メモリ | 376,748 KB |
実行使用メモリ | 17,408 KB |
最終ジャッジ日時 | 2024-08-13 10:57:51 |
合計ジャッジ時間 | 15,765 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
use proconio::{input, marker::Usize1}; fn main() { input! { n:usize, m:usize, x:usize, mut ab:[(usize,Usize1);n], k:usize, c:[usize;k], } ab.sort_by(|x, y| y.0.cmp(&x.0)); let mut seq = vec![]; let mut i = 0; let mut j = 0; let mut used = vec![false; m]; let mut fin = vec![false; n]; let mut scores = vec![0]; while i < n { if j < n && ab[i].0 <= ab[j].0 + x { seq.push(j); fin[j] = true; used[ab[j].1] = true; let last_score = *scores.last().unwrap(); scores.push(last_score + ab[j].0 + x); if i == j { i += 1; } while j < n && used[ab[j].1] { j += 1; } } else { seq.push(i); fin[i] = true; let last_score = *scores.last().unwrap(); scores.push(last_score + ab[i].0); while i < n && fin[i] { i += 1; } } } let ans = c.iter().map(|&ci| scores[ci]).sum::<usize>(); println!("{}", ans); }