Submission #62805776


Source Code Expand

use itertools::Itertools;
use proconio::{input, marker::Usize1};

fn main() {
    input!{
        n: usize,
        q: usize,
        a: [u64; n],
        queries: [(Usize1, u64); q],
    }

    let mut ans = vec![0; q];
    let mut qi = 0;
    let indicates = (0..q).sorted_unstable_by_key(|i| queries[*i].0).collect_vec();

    let mut dp = vec![INF; n];
    let mut mv = vec![INF; n];

    for i in 0..n {
        let idx = dp.lower_bound(a[i]);
        dp[idx] = a[i];
        mv[idx] = mv[idx].min(a[i]);

        while qi < q && queries[indicates[qi]].0 == i {
            let j = mv.lower_bound(queries[indicates[qi]].1);
            ans[indicates[qi]] = if j < n && mv[j] == queries[indicates[qi]].1 { j + 1 } else { j };
            qi += 1;
        }
    }
    println!("{}", ans.iter().join("\n"));
}
pub static INF: u64 = 1e18 as u64;
pub static DI: &[usize] = &[0, !0, 0, 1, !0, 1, !0, 1];
pub static DJ: &[usize] = &[!0, 0, 1, 0, !0, !0, 1, 1];
pub static DC: &[char] = &['L', 'U', 'R', 'D'];
pub trait VecLibs<T: std::cmp::Ord> {
    fn lower_bound(&self, elm: T) -> usize;
    fn upper_bound(&self, elm: T) -> usize;
}

impl<T: std::cmp::Ord> VecLibs<T> for Vec<T> {
    fn lower_bound(&self, elm: T) -> usize {
        let mut left = 0;
        let mut right = self.len();
        while left < right {
            let mid = (left + right) / 2;
            if self[mid] < elm {
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        left
    }

    fn upper_bound(&self, elm: T) -> usize {
        let mut left = 0;
        let mut right = self.len();
        while left < right {
            let mid = (left + right) / 2;
            if self[mid] <= elm {
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        left
    }
}

Submission Info

Submission Time
Task F - Prefix LIS Query
User ardRiriy
Language Rust (rustc 1.70.0)
Score 500
Code Size 1859 Byte
Status AC
Exec Time 70 ms
Memory 19124 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 37
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 02_random2_00.txt, 02_random2_01.txt, 02_random2_02.txt, 02_random2_03.txt, 02_random2_04.txt, 03_random3_00.txt, 03_random3_01.txt, 03_random3_02.txt, 03_random3_03.txt, 03_random3_04.txt, 03_random3_05.txt, 03_random3_06.txt, 03_random3_07.txt, 03_random3_08.txt, 03_random3_09.txt, 04_handmade_00.txt, 04_handmade_01.txt, 04_handmade_02.txt, 04_handmade_03.txt, 04_handmade_04.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 2020 KiB
00_sample_01.txt AC 1 ms 1920 KiB
01_random_00.txt AC 1 ms 1860 KiB
01_random_01.txt AC 15 ms 11024 KiB
01_random_02.txt AC 18 ms 8400 KiB
01_random_03.txt AC 16 ms 7044 KiB
01_random_04.txt AC 27 ms 9412 KiB
01_random_05.txt AC 33 ms 10592 KiB
01_random_06.txt AC 64 ms 18628 KiB
01_random_07.txt AC 64 ms 18628 KiB
01_random_08.txt AC 67 ms 18644 KiB
01_random_09.txt AC 66 ms 18776 KiB
01_random_10.txt AC 67 ms 18680 KiB
01_random_11.txt AC 62 ms 18572 KiB
01_random_12.txt AC 64 ms 18700 KiB
01_random_13.txt AC 61 ms 18716 KiB
01_random_14.txt AC 65 ms 18624 KiB
02_random2_00.txt AC 46 ms 18828 KiB
02_random2_01.txt AC 47 ms 18816 KiB
02_random2_02.txt AC 49 ms 18632 KiB
02_random2_03.txt AC 53 ms 18656 KiB
02_random2_04.txt AC 59 ms 18772 KiB
03_random3_00.txt AC 67 ms 19124 KiB
03_random3_01.txt AC 45 ms 18416 KiB
03_random3_02.txt AC 69 ms 19096 KiB
03_random3_03.txt AC 46 ms 18460 KiB
03_random3_04.txt AC 67 ms 19016 KiB
03_random3_05.txt AC 48 ms 18292 KiB
03_random3_06.txt AC 68 ms 19096 KiB
03_random3_07.txt AC 53 ms 18456 KiB
03_random3_08.txt AC 70 ms 19120 KiB
03_random3_09.txt AC 55 ms 18712 KiB
04_handmade_00.txt AC 43 ms 18592 KiB
04_handmade_01.txt AC 53 ms 17756 KiB
04_handmade_02.txt AC 42 ms 17868 KiB
04_handmade_03.txt AC 29 ms 18060 KiB
04_handmade_04.txt AC 35 ms 18288 KiB