結果
| 問題 | No.1095 Smallest Kadomatsu Subsequence |
| コンテスト | |
| ユーザー |
Strorkis
|
| 提出日時 | 2020-06-26 21:50:23 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 198 ms / 2,000 ms |
| コード長 | 1,481 bytes |
| コンパイル時間 | 15,259 ms |
| コンパイル使用メモリ | 387,104 KB |
| 実行使用メモリ | 7,456 KB |
| 最終ジャッジ日時 | 2024-07-04 20:41:01 |
| 合計ジャッジ時間 | 17,647 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 30 |
ソースコード
use std::collections::BTreeSet;
use std::cmp;
fn main() {
let n: usize = {
let mut buf = String::new();
std::io::stdin().read_line(&mut buf).unwrap();
buf.trim_end().parse().unwrap()
};
let a: Vec<usize> = {
let mut buf = String::new();
std::io::stdin().read_line(&mut buf).unwrap();
let iter = buf.split_whitespace();
iter.map(|x| x.parse().unwrap()).collect()
};
let mut ans = std::usize::MAX;
let mut left = BTreeSet::new();
let mut right = a.iter().cloned().collect::<BTreeSet<_>>();
left.insert(a[0]);
right.remove(&a[0]);
for i in 1..(n - 1) {
right.remove(&a[i]);
match left.range(a[i]..).next() {
Some(x) => {
match right.range(a[i]..).next() {
Some(y) => {
ans = cmp::min(ans, x + a[i] + y);
},
None => (),
}
},
None => (),
}
match left.range(..a[i]).next() {
Some(x) => {
match right.range(..a[i]).next() {
Some(y) => {
ans = cmp::min(ans, x + a[i] + y);
},
None => (),
}
},
None => (),
}
left.insert(a[i]);
}
if ans == std::usize::MAX {
println!("-1");
} else {
println!("{}", ans);
}
}
Strorkis