結果

問題 No.497 入れ子の箱
ユーザー tanzaku
提出日時 2017-03-24 23:09:40
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 586 ms / 5,000 ms
コード長 2,611 bytes
コンパイル時間 10,565 ms
コンパイル使用メモリ 378,832 KB
実行使用メモリ 7,168 KB
最終ジャッジ日時 2024-07-05 23:32:09
合計ジャッジ時間 23,110 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 29
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

fn inside(a: &mut [usize; 3], b: &mut [usize; 3]) -> bool {
let mut ok = true;
for i in 0..3 {
if a[i] == std::usize::MAX { continue; }
ok = false;
for j in 0..3 {
if b[j] == std::usize::MAX { continue; }
if a[i] < b[j] {
let tmp = (a[i], b[j]);
a[i] = std::usize::MAX;
b[j] = std::usize::MAX;
let res = inside(a, b);
a[i] = tmp.0;
b[j] = tmp.1;
if res { return true; }
}
}
}
ok
}
fn main() {
let mut scanner = Scanner::new();
let n = scanner.next_usize();
let mut g = vec![Vec::new(); n];
let mut t = Vec::new();
for i in 0..n {
t.push([scanner.next_usize(), scanner.next_usize(), scanner.next_usize()]);
for j in 0..i {
let mut a = t[j];
let mut b = t[i];
if inside(&mut a, &mut b) { g[i].push(j) }
if inside(&mut b, &mut a) { g[j].push(i) }
}
}
let mut dp = vec![1; n];
for _ in 0..n {
for i in 0..n {
for j in 0..g[i].len() {
dp[i] = std::cmp::max(dp[i], dp[g[i][j]] + 1)
}
}
}
println!("{}", dp.iter().max().unwrap());
}
struct Scanner {
reader: std::io::Stdin,
tokens: std::collections::VecDeque<String>,
}
impl Scanner {
fn new() -> Self {
Scanner {
reader: std::io::stdin(),
tokens: std::collections::VecDeque::new(),
}
}
fn next(&mut self) -> String {
if self.tokens.is_empty() {
let mut s = String::new();
loop {
self.reader.read_line(&mut s).ok();
let s = s.trim();
if s.len() != 0 {
for it in s.split_whitespace() {
self.tokens.push_back(it.into())
}
break;
}
}
}
self.tokens.pop_front().unwrap()
}
fn next_generics<T>(&mut self) -> T where
T: std::str::FromStr + std::marker::Copy,
<T as std::str::FromStr>::Err: std::fmt::Debug
{
self.next().parse().unwrap()
}
#[allow(dead_code)] fn next_i32(&mut self) -> i32 { self.next_generics::<i32>() }
#[allow(dead_code)] fn next_i64(&mut self) -> i64 { self.next_generics::<i64>() }
#[allow(dead_code)] fn next_u64(&mut self) -> u64 { self.next_generics::<u64>() }
#[allow(dead_code)] fn next_usize(&mut self) -> usize { self.next_generics::<usize>() }
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0