Submission #52989734


Source Code Expand

#![allow(unused_imports)]
#![allow(unused_variables)]
#![allow(non_snake_case)]
#![allow(dead_code)]
#![allow(unused_macros)]

macro_rules! debug {
    ( $($val:expr),* $(,)* ) => {{
        #[cfg(debug_assertions)]
        eprintln!( concat!($(stringify!($val), " = {:?}, "),*), $($val),* );
    }};
}
macro_rules! debug2D {
    ( $array:expr ) => {{
        #![cfg(debug_assertions)]
        eprintln!("{}: ", stringify!($array));
        for row in &$array {
            eprintln!("{:?}", row);
        }
    }};
}

use proconio::{
    input,
    marker::{Bytes, Chars, Usize1},
};

const NEG1: usize = 1_usize.wrapping_neg();
const INF: isize = 1001001001001001001;

fn main() {
    input! {
        N: usize,
        K: Usize1,
        mut A: [isize; N]
    }

    if cfg!(debug_assertions) {
        let mut all = vec![];
        for i in 0..N {
            for j in 0..i {
                all.push(A[i] * A[j]);
            }
        }
        all.sort();
        eprintln!("{all:?}");
    }

    // Aをソート
    A.sort();

    // A[i] * A[j] がx未満である(i,j)の個数を数える
    let count = |x: isize| -> usize {
        let mut ans = 0;
        for i in 0..N {
            if A[i] >= 0 {
                let mut ok = NEG1;
                let mut ng = N;
                while ng.wrapping_sub(ok) > 1 {
                    let mid = ok.wrapping_add(ng) / 2;
                    if A[i] * A[mid] < x {
                        ok = mid;
                    } else {
                        ng = mid;
                    }
                }
                if ok != NEG1 && i <= ok {
                    ans += ok;
                } else {
                    ans += ok.wrapping_add(1);
                }
            } else {
                let mut ok = NEG1;
                let mut ng = N;
                while ng.wrapping_sub(ok) > 1 {
                    let mid = ok.wrapping_add(ng) / 2;
                    if A[i] * A[N - mid - 1] < x {
                        ok = mid;
                    } else {
                        ng = mid;
                    }
                }
                if ok != NEG1 && N.wrapping_sub(ok) - 1 <= i {
                    ans += ok;
                } else {
                    ans += ok.wrapping_add(1);
                }
            }
        }
        ans / 2
    };

    let mut ok = -INF;
    let mut ng = INF;

    while ng - ok > 1 {
        let mid = (ok + ng) / 2;

        if count(mid) <= K {
            ok = mid;
        } else {
            ng = mid;
        }
    }

    println!("{ok}");
}

Submission Info

Submission Time
Task D - Pairs
User powell
Language Rust (rustc 1.70.0)
Score 400
Code Size 2575 Byte
Status AC
Exec Time 453 ms
Memory 6024 KiB

Judge Result

Set Name Sample Subtask1
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 79
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.txt, sample_03.txt, sub1_01.txt, sub1_02.txt, sub1_03.txt, sub1_04.txt, sub1_05.txt, sub1_06.txt, sub1_07.txt, sub1_08.txt, sub1_09.txt, sub1_10.txt, sub1_11.txt, sub1_12.txt, sub1_13.txt, sub1_14.txt, sub1_15.txt, sub1_16.txt, sub1_17.txt, sub1_18.txt, sub1_19.txt, sub1_20.txt, sub1_21.txt, sub1_22.txt, sub1_23.txt, sub1_24.txt, sub1_25.txt, sub1_26.txt, sub1_27.txt, sub1_28.txt, sub1_29.txt, sub1_30.txt, sub1_31.txt, sub1_32.txt, sub1_33.txt, sub1_small_01.txt, sub1_small_02.txt, sub1_small_03.txt, sub1_small_04.txt, sub1_small_05.txt, sub1_small_06.txt, sub1_small_07.txt, sub1_small_08.txt, sub1_small_09.txt, sub1_small_10.txt, sub1_small_11.txt, sub1_small_12.txt, sub1_small_13.txt, sub1_small_14.txt, sub1_small_15.txt, sub1_small_16.txt, sub1_small_17.txt, sub1_small_18.txt, sub1_small_19.txt, sub1_small_20.txt, sub1_small_21.txt, sub1_small_22.txt, sub1_small_23.txt, sub1_small_24.txt, sub1_small_25.txt, sub1_small_26.txt, sub1_small_27.txt, sub1_small_28.txt, sub1_small_29.txt, sub1_small_30.txt, sub1_small_31.txt, sub1_small_32.txt, sub1_small_33.txt, sub1_small_34.txt, sub1_small_35.txt, sub1_small_36.txt, sub1_small_37.txt, sub1_small_38.txt, sub1_small_39.txt, sub1_small_40.txt, sub1_small_41.txt, sub1_small_42.txt, sub1_small_43.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 1984 KiB
sample_02.txt AC 1 ms 1924 KiB
sample_03.txt AC 1 ms 1980 KiB
sub1_01.txt AC 102 ms 3388 KiB
sub1_02.txt AC 308 ms 4896 KiB
sub1_03.txt AC 431 ms 5936 KiB
sub1_04.txt AC 138 ms 4116 KiB
sub1_05.txt AC 102 ms 3560 KiB
sub1_06.txt AC 40 ms 2420 KiB
sub1_07.txt AC 327 ms 5028 KiB
sub1_08.txt AC 385 ms 5420 KiB
sub1_09.txt AC 314 ms 4628 KiB
sub1_10.txt AC 62 ms 2632 KiB
sub1_11.txt AC 224 ms 5368 KiB
sub1_12.txt AC 33 ms 2236 KiB
sub1_13.txt AC 231 ms 4932 KiB
sub1_14.txt AC 88 ms 3092 KiB
sub1_15.txt AC 31 ms 2228 KiB
sub1_16.txt AC 229 ms 5512 KiB
sub1_17.txt AC 123 ms 3788 KiB
sub1_18.txt AC 12 ms 2240 KiB
sub1_19.txt AC 252 ms 5928 KiB
sub1_20.txt AC 237 ms 4016 KiB
sub1_21.txt AC 349 ms 5964 KiB
sub1_22.txt AC 217 ms 3680 KiB
sub1_23.txt AC 148 ms 3944 KiB
sub1_24.txt AC 142 ms 3476 KiB
sub1_25.txt AC 69 ms 2840 KiB
sub1_26.txt AC 291 ms 4640 KiB
sub1_27.txt AC 206 ms 3812 KiB
sub1_28.txt AC 410 ms 6016 KiB
sub1_29.txt AC 276 ms 5940 KiB
sub1_30.txt AC 398 ms 5892 KiB
sub1_31.txt AC 400 ms 5908 KiB
sub1_32.txt AC 453 ms 6024 KiB
sub1_33.txt AC 448 ms 5920 KiB
sub1_small_01.txt AC 2 ms 1828 KiB
sub1_small_02.txt AC 1 ms 1880 KiB
sub1_small_03.txt AC 2 ms 1956 KiB
sub1_small_04.txt AC 1 ms 1944 KiB
sub1_small_05.txt AC 1 ms 1920 KiB
sub1_small_06.txt AC 2 ms 1956 KiB
sub1_small_07.txt AC 1 ms 1980 KiB
sub1_small_08.txt AC 2 ms 2008 KiB
sub1_small_09.txt AC 1 ms 1944 KiB
sub1_small_10.txt AC 2 ms 1948 KiB
sub1_small_11.txt AC 2 ms 1828 KiB
sub1_small_12.txt AC 2 ms 1964 KiB
sub1_small_13.txt AC 1 ms 1956 KiB
sub1_small_14.txt AC 2 ms 1904 KiB
sub1_small_15.txt AC 1 ms 1868 KiB
sub1_small_16.txt AC 3 ms 1892 KiB
sub1_small_17.txt AC 1 ms 1920 KiB
sub1_small_18.txt AC 1 ms 2016 KiB
sub1_small_19.txt AC 1 ms 1868 KiB
sub1_small_20.txt AC 2 ms 2044 KiB
sub1_small_21.txt AC 2 ms 1904 KiB
sub1_small_22.txt AC 2 ms 1840 KiB
sub1_small_23.txt AC 1 ms 1984 KiB
sub1_small_24.txt AC 1 ms 1960 KiB
sub1_small_25.txt AC 1 ms 1996 KiB
sub1_small_26.txt AC 1 ms 1948 KiB
sub1_small_27.txt AC 1 ms 1896 KiB
sub1_small_28.txt AC 1 ms 1948 KiB
sub1_small_29.txt AC 2 ms 1964 KiB
sub1_small_30.txt AC 1 ms 1952 KiB
sub1_small_31.txt AC 4 ms 1964 KiB
sub1_small_32.txt AC 2 ms 2040 KiB
sub1_small_33.txt AC 2 ms 2020 KiB
sub1_small_34.txt AC 2 ms 1832 KiB
sub1_small_35.txt AC 2 ms 1908 KiB
sub1_small_36.txt AC 1 ms 1976 KiB
sub1_small_37.txt AC 2 ms 1884 KiB
sub1_small_38.txt AC 1 ms 1952 KiB
sub1_small_39.txt AC 1 ms 1988 KiB
sub1_small_40.txt AC 3 ms 1940 KiB
sub1_small_41.txt AC 1 ms 1924 KiB
sub1_small_42.txt AC 1 ms 1944 KiB
sub1_small_43.txt AC 2 ms 1960 KiB