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
AC × 3
AC × 53
TLE × 1
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