提出 #61221157


ソースコード 拡げる

#![allow(dead_code)]

use proconio::input;

trait Bound<T> {
    fn lower_bound(&self, x: &T) -> usize;
    fn upper_bound(&self, x: &T) -> usize;
}

impl<T: PartialOrd> Bound<T> for [T] {
    fn lower_bound(&self, x: &T) -> usize {
        let (mut low, mut high) = (0, self.len());
        while low + 1 < high {
            let mid = (low + high) / 2;
            if self[mid] < *x {
                low = mid;
            } else {
                high = mid;
            }
        }
        if self[low] < *x {
            low + 1
        } else {
            low
        }
    }

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

fn func(a: &[usize], idx: usize, c: usize, current_xor: usize, ans: &mut usize) {
    // c = 0(残り選択数が 0) ならば、最大値を更新して戻る
    if c == 0 {
        if current_xor > *ans {
            *ans = current_xor;
        }
        return;
    }
    // idx が配列の長さに達したら探索を終了
    if idx == a.len() {
        return;
    }
    // A[idx] を使う場合
    func(a, idx + 1, c - 1, current_xor ^ a[idx], ans);
    // A[idx] を使わない場合
    func(a, idx + 1, c, current_xor, ans);
}

fn main() {
    input! {n:usize,k:usize,a:[usize;n]}

    let mut ans = 0;

    if k <= n - k {
        func(&a, 0, k, 0, &mut ans);
    } else {
        let mut all_xor = 0;
        for &val in &a {
            all_xor ^= val;
        }
        func(&a, 0, n - k, all_xor, &mut ans);
    }

    println!("{}", ans)
}

提出情報

提出日時
問題 E - Maximize XOR
ユーザ tsu7magu6
言語 Rust (rustc 1.70.0)
得点 500
コード長 1929 Byte
結果 AC
実行時間 14 ms
メモリ 7016 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 2
AC × 48
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 01_test_41.txt, 01_test_42.txt, 01_test_43.txt, 01_test_44.txt, 01_test_45.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 1968 KiB
00_sample_01.txt AC 1 ms 2076 KiB
01_test_00.txt AC 6 ms 4008 KiB
01_test_01.txt AC 14 ms 6920 KiB
01_test_02.txt AC 12 ms 6656 KiB
01_test_03.txt AC 13 ms 6996 KiB
01_test_04.txt AC 2 ms 1940 KiB
01_test_05.txt AC 3 ms 1964 KiB
01_test_06.txt AC 1 ms 1960 KiB
01_test_07.txt AC 3 ms 1904 KiB
01_test_08.txt AC 1 ms 1928 KiB
01_test_09.txt AC 3 ms 1872 KiB
01_test_10.txt AC 1 ms 1792 KiB
01_test_11.txt AC 3 ms 1976 KiB
01_test_12.txt AC 1 ms 1860 KiB
01_test_13.txt AC 3 ms 1848 KiB
01_test_14.txt AC 1 ms 1920 KiB
01_test_15.txt AC 3 ms 2076 KiB
01_test_16.txt AC 1 ms 1964 KiB
01_test_17.txt AC 3 ms 1912 KiB
01_test_18.txt AC 1 ms 1948 KiB
01_test_19.txt AC 3 ms 1916 KiB
01_test_20.txt AC 2 ms 1928 KiB
01_test_21.txt AC 3 ms 1784 KiB
01_test_22.txt AC 1 ms 2076 KiB
01_test_23.txt AC 3 ms 1848 KiB
01_test_24.txt AC 1 ms 1868 KiB
01_test_25.txt AC 4 ms 1852 KiB
01_test_26.txt AC 1 ms 1800 KiB
01_test_27.txt AC 4 ms 1908 KiB
01_test_28.txt AC 1 ms 1956 KiB
01_test_29.txt AC 3 ms 1924 KiB
01_test_30.txt AC 4 ms 1840 KiB
01_test_31.txt AC 4 ms 1896 KiB
01_test_32.txt AC 1 ms 2068 KiB
01_test_33.txt AC 5 ms 1944 KiB
01_test_34.txt AC 0 ms 2060 KiB
01_test_35.txt AC 5 ms 1900 KiB
01_test_36.txt AC 3 ms 1964 KiB
01_test_37.txt AC 5 ms 1928 KiB
01_test_38.txt AC 1 ms 1792 KiB
01_test_39.txt AC 5 ms 1932 KiB
01_test_40.txt AC 1 ms 1932 KiB
01_test_41.txt AC 7 ms 1856 KiB
01_test_42.txt AC 1 ms 2056 KiB
01_test_43.txt AC 6 ms 1904 KiB
01_test_44.txt AC 1 ms 1868 KiB
01_test_45.txt AC 14 ms 7016 KiB