結果
| 問題 |
No.2796 Small Matryoshka
|
| コンテスト | |
| ユーザー |
naut3
|
| 提出日時 | 2024-06-29 17:07:15 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 135 ms / 2,000 ms |
| コード長 | 1,097 bytes |
| コンパイル時間 | 22,780 ms |
| コンパイル使用メモリ | 377,472 KB |
| 実行使用メモリ | 29,304 KB |
| 最終ジャッジ日時 | 2024-06-29 17:07:41 |
| 合計ジャッジ時間 | 17,564 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 19 |
ソースコード
#![allow(non_snake_case, unused_imports)]
use proconio::{fastout, input, marker::*};
#[fastout]
fn main() {
input! {
N: usize,
rR: [(usize, usize); N],
}
let mut X = vec![0, 1 << 60];
for &(r, R) in rR.iter() {
X.push(r);
X.push(R);
}
let (z, zi) = coordinate_compression(&X);
let mut cs = vec![0; z.len()];
for (r, R) in rR {
let &left = zi.get(&r).unwrap();
let &right = zi.get(&R).unwrap();
cs[left] += 1;
cs[right] -= 1;
}
let mut now = 0;
let mut ans = 0;
for i in 0..z.len() {
now += cs[i];
ans = std::cmp::max(ans, now);
}
println!("{}", ans - 1);
}
pub fn coordinate_compression<T: std::cmp::Ord + Clone + Copy>(
values: &[T],
) -> (Vec<T>, std::collections::BTreeMap<T, usize>) {
let s: std::collections::BTreeSet<T> = values.iter().cloned().collect();
let z: Vec<T> = s.iter().cloned().collect();
let zinv: std::collections::BTreeMap<T, usize> =
z.iter().enumerate().map(|(i, &v)| (v, i)).collect();
(z, zinv)
}
naut3