Submission #3013071
Source Code Expand
#![allow(unused_imports)] #![allow(non_snake_case)] use std::cell::RefCell; use std::cmp::{max, min, Ordering}; use std::collections::*; use std::fmt::{Debug, Formatter, Write as FmtWrite}; use std::io::{stderr, stdin, BufRead, Write}; use std::mem::{replace, swap}; use std::ops::*; use std::rc::Rc; // ----------------------------------------------- // Framework <https://github.com/vain0x/procon> // ----------------------------------------------- #[allow(unused_macros)] macro_rules! read { ([$t:ty] ; $n:expr) => ((0..$n).map(|_| read!([$t])).collect::<Vec<_>>()); ($($t:ty),+ ; $n:expr) => ((0..$n).map(|_| read!($($t),+)).collect::<Vec<_>>()); ([$t:ty]) => (rl().split_whitespace().map(|w| w.parse().unwrap()).collect::<Vec<$t>>()); ($t:ty) => (rl().parse::<$t>().unwrap()); ($($t:ty),*) => {{ let buf = rl(); let mut w = buf.split_whitespace(); ($(w.next().unwrap().parse::<$t>().unwrap()),*) }}; } #[allow(unused_macros)] macro_rules! debug { ($($arg:expr),*) => { #[cfg(debug_assertions)] $(writeln!(stderr(), "{} = {:?}", stringify!($arg), $arg).unwrap());* }; } #[allow(dead_code)] fn rl() -> String { let mut buf = String::new(); stdin().read_line(&mut buf).unwrap(); buf.trim_right().to_owned() } trait IteratorExt: Iterator + Sized { fn vec(self) -> Vec<Self::Item> { self.collect() } } impl<T: Iterator> IteratorExt for T {} // ----------------------------------------------- // Solution // ----------------------------------------------- #[derive(PartialEq, Eq, Clone, Debug)] pub struct Rev<T>(pub T); impl<T: PartialOrd> PartialOrd for Rev<T> { fn partial_cmp(&self, other: &Rev<T>) -> Option<Ordering> { other.0.partial_cmp(&self.0) } } impl<T: Ord> Ord for Rev<T> { fn cmp(&self, other: &Rev<T>) -> Ordering { other.0.cmp(&self.0) } } fn main() { let (_N, K, Q) = read!(usize, usize, usize); let A = read![[i64]]; let mut mi = std::i64::MAX; let mut ys = A.to_owned(); ys.sort(); ys.dedup(); for y in ys { // Y >= y になる操作だけ考える。つまり、y 未満の要素は取り除かないとする。 // y 未満の要素を含む部分列には操作を適用できないので、そこで列が分離していると考える。 // y 未満の要素を列から除去して、列をいくつかの部分列に分離する。 // X - Y を最小化するには、それらの部分列から最小の要素を取り除いていくことで、X を最小化すればいい。 let mut available = vec![]; let mut chunks = vec![]; let mut l = 0; for r in 0..A.len() + 1 { if r < A.len() && A[r] >= y { continue; } if l < r { chunks.push(&A[l..r]); } l = r + 1; } debug!(y, chunks); for chunk in chunks { let mut chunk = chunk.to_owned(); chunk.sort(); available.extend(chunk.into_iter().rev().skip(K - 1)); } if available.len() < Q { continue; } available.sort(); debug!(available); let y = available[0]; let x = available[Q - 1]; mi = min(mi, x - y); } println!("{}", mi) }
Submission Info
Submission Time | |
---|---|
Task | E - Range Minimum Queries |
User | vain0 |
Language | Rust (1.15.1) |
Score | 0 |
Code Size | 3544 Byte |
Status | TLE |
Exec Time | 2015 ms |
Memory | 4476 KB |
Judge Result
Set Name | Sample | All | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 600 | ||||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_47.txt, subtask_1_48.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 2 ms | 4352 KB |
sample_02.txt | AC | 2 ms | 4352 KB |
sample_03.txt | AC | 2 ms | 4352 KB |
subtask_1_01.txt | AC | 2 ms | 4352 KB |
subtask_1_02.txt | AC | 2 ms | 4352 KB |
subtask_1_03.txt | AC | 1112 ms | 4352 KB |
subtask_1_04.txt | AC | 9 ms | 4352 KB |
subtask_1_05.txt | AC | 2 ms | 4352 KB |
subtask_1_06.txt | AC | 95 ms | 4352 KB |
subtask_1_07.txt | AC | 1052 ms | 4352 KB |
subtask_1_08.txt | AC | 1705 ms | 4352 KB |
subtask_1_09.txt | AC | 671 ms | 4352 KB |
subtask_1_10.txt | AC | 3 ms | 4352 KB |
subtask_1_11.txt | AC | 1970 ms | 4352 KB |
subtask_1_12.txt | TLE | 2015 ms | 4352 KB |
subtask_1_13.txt | AC | 1989 ms | 4352 KB |
subtask_1_14.txt | AC | 1958 ms | 4352 KB |
subtask_1_15.txt | AC | 1977 ms | 4352 KB |
subtask_1_16.txt | AC | 1959 ms | 4352 KB |
subtask_1_17.txt | AC | 1440 ms | 4352 KB |
subtask_1_18.txt | AC | 1442 ms | 4352 KB |
subtask_1_19.txt | AC | 1443 ms | 4352 KB |
subtask_1_20.txt | AC | 1447 ms | 4352 KB |
subtask_1_21.txt | AC | 1449 ms | 4352 KB |
subtask_1_22.txt | AC | 1437 ms | 4352 KB |
subtask_1_23.txt | AC | 803 ms | 4352 KB |
subtask_1_24.txt | AC | 848 ms | 4352 KB |
subtask_1_25.txt | AC | 844 ms | 4352 KB |
subtask_1_26.txt | AC | 999 ms | 4352 KB |
subtask_1_27.txt | AC | 404 ms | 4352 KB |
subtask_1_28.txt | AC | 969 ms | 4352 KB |
subtask_1_29.txt | AC | 1420 ms | 4352 KB |
subtask_1_30.txt | AC | 3 ms | 4352 KB |
subtask_1_31.txt | AC | 1954 ms | 4352 KB |
subtask_1_32.txt | AC | 1975 ms | 4352 KB |
subtask_1_33.txt | AC | 1969 ms | 4352 KB |
subtask_1_34.txt | AC | 1997 ms | 4352 KB |
subtask_1_35.txt | AC | 1982 ms | 4352 KB |
subtask_1_36.txt | AC | 1963 ms | 4352 KB |
subtask_1_37.txt | AC | 1433 ms | 4476 KB |
subtask_1_38.txt | AC | 1431 ms | 4476 KB |
subtask_1_39.txt | AC | 1428 ms | 4352 KB |
subtask_1_40.txt | AC | 1444 ms | 4352 KB |
subtask_1_41.txt | AC | 957 ms | 4352 KB |
subtask_1_42.txt | AC | 423 ms | 4352 KB |
subtask_1_43.txt | AC | 566 ms | 4352 KB |
subtask_1_44.txt | AC | 614 ms | 4352 KB |
subtask_1_45.txt | AC | 1430 ms | 4352 KB |
subtask_1_46.txt | AC | 3 ms | 4352 KB |
subtask_1_47.txt | AC | 1951 ms | 4352 KB |
subtask_1_48.txt | AC | 1960 ms | 4352 KB |