結果
| 問題 |
No.989 N×Mマス計算(K以上)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-02-14 22:38:44 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,517 bytes |
| コンパイル時間 | 14,741 ms |
| コンパイル使用メモリ | 378,736 KB |
| 実行使用メモリ | 10,496 KB |
| 最終ジャッジ日時 | 2024-10-06 12:59:10 |
| 合計ジャッジ時間 | 18,061 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 2 |
| other | WA * 8 OLE * 1 -- * 9 |
ソースコード
use std::io::Read;
fn main() {
let mut all_data = String::new();
std::io::stdin().read_to_string(&mut all_data).ok();
let mut all_data = all_data.trim().split('\n').map(|s| s.trim());
let nmk: Vec<usize> = all_data.next().unwrap().split_whitespace().map(|s| s.parse().unwrap()).collect();
let n: usize = nmk[0];
let m: usize = nmk[1];
let k: usize = nmk[2];
let opb: Vec<&str> = all_data.next().unwrap().split_whitespace().collect();
let mut b: Vec<usize> = opb.iter().skip(1).map(|s| s.parse().unwrap()).collect();
b.sort();
let op: &str = opb[0];
let a: Vec<usize> = all_data.take(n as usize).map(|s| s.parse().unwrap()).collect();
let mut result: usize = 0;
for i in a.iter() {
let mut lower = 0;
let mut upper = m - 1;
let mut middle = (lower + upper) / 2;
while upper - lower > 0 {
let target = match op {
"+" => i + b[middle],
"*" => i * b[middle],
_ => 0
};
if target < k {
lower = middle + 1;
} else {
upper = middle;
}
middle = (lower + upper) / 2;
println!("{} {} {} {} {:?}", lower, upper, middle, target, b);
}
let target = match op {
"+" => i + b[middle],
"*" => i * b[middle],
_ => 0
};
result += m - middle + if target >= k { 1 } else { 0 } - 1;
}
println!("{}", result);
}