結果
| 問題 |
No.3372 Suitable Constraint
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-21 22:53:27 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 18 ms / 2,000 ms |
| コード長 | 1,757 bytes |
| コンパイル時間 | 14,566 ms |
| コンパイル使用メモリ | 396,928 KB |
| 実行使用メモリ | 7,848 KB |
| 最終ジャッジ日時 | 2025-11-21 22:53:43 |
| 合計ジャッジ時間 | 15,378 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 19 |
ソースコード
use proconio::{fastout, input};
#[fastout]
fn main() {
input! {
a: [[i32]],
}
println!("{}", output(solve(a)));
}
fn solve(a: Vec<Vec<i32>>) -> Vec<i64> {
let mut ans = Vec::with_capacity(a.len());
for a in a {
let mut minus_max = None;
let mut minus_min = None;
let mut plus_max = None;
let mut plus_min = None;
let mut zero_flag = false;
for a in a {
match a.signum() {
-1 => {
if minus_min == None || minus_min.unwrap() > a {
minus_min = Some(a);
}
if minus_max == None || minus_max.unwrap() < a {
minus_max = Some(a);
}
}
1 => {
if plus_min == None || plus_min.unwrap() > a {
plus_min = Some(a);
}
if plus_max == None || plus_max.unwrap() < a {
plus_max = Some(a);
}
}
0 => zero_flag = true,
_ => (),
}
}
if zero_flag {
ans.push(0);
} else if (minus_max == None) && (plus_min != None) {
ans.push(plus_min.unwrap() as i64 * plus_max.unwrap() as i64);
} else if (minus_max != None) && (plus_min == None) {
ans.push(minus_min.unwrap() as i64 * minus_max.unwrap() as i64);
} else {
ans.push(minus_max.unwrap() as i64 * plus_min.unwrap() as i64);
}
}
ans
}
fn output(ans: Vec<i64>) -> String {
ans.into_iter()
.map(|x| x.to_string())
.collect::<Vec<_>>()
.join("\n")
}