結果

問題 No.924 紲星
ユーザー sakikuroesakikuroe
提出日時 2024-05-02 13:44:46
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 486 ms / 4,000 ms
コード長 40,406 bytes
コンパイル時間 11,335 ms
コンパイル使用メモリ 407,284 KB
実行使用メモリ 84,188 KB
最終ジャッジ日時 2024-11-23 03:53:16
合計ジャッジ時間 17,256 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
外部呼び出し有り
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 16
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#![cfg_attr(any(),rustfmt::skip)]code!{
use proconio::{input, marker::Usize1};
#[derive(Clone)]
pub struct AccumulateVector {
accum_table: Vec<usize>,
}
impl AccumulateVector {
pub fn new(v: &[usize]) -> Self {
let mut accum_table = vec![0; v.len() + 1];
for i in 0..v.len() {
accum_table[i + 1] = accum_table[i] + v[i];
}
AccumulateVector { accum_table }
}
/// Returns:
/// lenght of v
pub fn len(&self) -> usize {
self.accum_table.len() - 1
}
/// Returns:
/// sum(v[0..i])
pub fn rank(&self, i: usize) -> usize {
self.accum_table[i]
}
}
#[derive(Clone)]
pub struct WaveletMatrix {
bit_table: Vec<AccumulateVector>,
sorted_deduped_v: Vec<usize>,
accum_table: Vec<AccumulateVector>,
accum_v: AccumulateVector,
}
impl WaveletMatrix {
const WAVELET_MATRIX_HEIGHT: usize = 18;
pub fn new(v: &[usize]) -> Self {
let mut sorted_deduped_v = v.to_vec();
sorted_deduped_v.sort_unstable();
sorted_deduped_v.dedup();
let mut compress = v
.iter()
.map(|&x| sorted_deduped_v.partition_point(|&y| y < x))
.collect::<Vec<_>>();
let mut bit_table = vec![];
let mut accum_table = vec![];
for i in (0..WaveletMatrix::WAVELET_MATRIX_HEIGHT).rev() {
bit_table.push(AccumulateVector::new(
&compress.iter().map(|&x| (x >> i) & 1).collect::<Vec<_>>(),
));
accum_table.push(AccumulateVector::new(
&compress
.iter()
.map(|&x| {
if (x >> i) & 1 == 0 {
sorted_deduped_v[x]
} else {
0
}
})
.collect::<Vec<_>>(),
));
compress = compress
.iter()
.filter(|&x| (x >> i) & 1 == 0)
.chain(compress.iter().filter(|&x| (x >> i) & 1 == 1))
.cloned()
.collect::<Vec<_>>();
}
let accum_v = AccumulateVector::new(v);
WaveletMatrix {
bit_table,
sorted_deduped_v,
accum_table,
accum_v,
}
}
/// Returns:
/// v[l..r].into_iter().filter(|y| y < upper).count()
pub fn count_less_than(&self, mut l: usize, mut r: usize, upper: usize) -> usize {
if r <= l {
return 0;
}
let upper = self.sorted_deduped_v.partition_point(|&x| x < upper);
let mut res = 0;
for (i, bit) in (0..Self::WAVELET_MATRIX_HEIGHT)
.rev()
.zip(self.bit_table.iter())
{
if (upper >> i) & 1 == 0 {
l = l - bit.rank(l);
r = r - bit.rank(r);
} else {
res += (r - l) - (bit.rank(r) - bit.rank(l));
l = bit.rank(l) + (bit.len() - bit.rank(bit.len()));
r = bit.rank(r) + (bit.len() - bit.rank(bit.len()));
}
}
res
}
/// Returns:
/// v[l..r].into_iter().filter(|y| lower <= y ).count()
pub fn count_more_than(&self, l: usize, r: usize, lower: usize) -> usize {
if r <= l {
return 0;
}
r - l - self.count_less_than(l, r, lower)
}
/// Returns:
/// {
/// use itertools::Itertools;
/// v[l..r].into_iter().sorted().nth(k)
/// }
pub fn get_kth_smallest(&self, mut l: usize, mut r: usize, mut k: usize) -> Option<usize> {
if r <= l || r - l <= k {
return None;
}
let mut res = 0;
for (i, bit) in (0..Self::WAVELET_MATRIX_HEIGHT)
.rev()
.zip(self.bit_table.iter())
{
let j = (r - l) - (bit.rank(r) - bit.rank(l));
if k < j {
l = l - bit.rank(l);
r = r - bit.rank(r);
} else {
l = bit.rank(l) + (bit.len() - bit.rank(bit.len()));
r = bit.rank(r) + (bit.len() - bit.rank(bit.len()));
res |= 1 << i;
k -= j;
}
}
Some(self.sorted_deduped_v[res])
}
/// Returns:
/// {
/// use itertools::Itertools;
/// v[l..r].into_iter().sorted().rev().nth(k)
/// }
pub fn get_kth_largest(&self, l: usize, r: usize, k: usize) -> Option<usize> {
if r <= l || r - l <= k {
return None;
}
self.get_kth_smallest(l, r, r - l - 1 - k)
}
/// Returns:
/// v[l..r].into_iter().filter(|y| lower <= y < upper).count()
pub fn count(&self, l: usize, r: usize, lower: usize, upper: usize) -> usize {
if r <= l {
return 0;
}
self.count_less_than(l, r, upper) - self.count_less_than(l, r, lower)
}
/// Returns:
/// {
/// use itertools::Itertools;
/// v[l..r].into_iter().filter(|x| x < upper).sum()
/// }
pub fn get_sum_less_than(&self, mut l: usize, mut r: usize, upper: usize) -> usize {
if r <= l {
return 0;
}
let upper = self.sorted_deduped_v.partition_point(|&x| x < upper);
let mut res = 0;
for (i, (bit, accum)) in (0..Self::WAVELET_MATRIX_HEIGHT)
.rev()
.zip(self.bit_table.iter().zip(self.accum_table.iter()))
{
if (upper >> i) & 1 == 0 {
l = l - bit.rank(l);
r = r - bit.rank(r);
} else {
res += accum.rank(r) - accum.rank(l);
l = bit.rank(l) + (bit.len() - bit.rank(bit.len()));
r = bit.rank(r) + (bit.len() - bit.rank(bit.len()));
}
}
res
}
/// Returns:
/// {
/// use itertools::Itertools;
/// v[l..r].into_iter().filter(|x| lower <= x).sum()
/// }
pub fn get_sum_more_than(&self, l: usize, r: usize, lower: usize) -> usize {
if r <= l {
return 0;
}
self.accum_v.rank(r) - self.accum_v.rank(l) - self.get_sum_less_than(l, r, lower)
}
/// Returns:
/// {
/// use itertools::Itertools;
/// v[l..r].into_iter().sorted().take(k).sum()
/// }
pub fn get_sum_k_smallest(&self, mut l: usize, mut r: usize, mut k: usize) -> Option<usize> {
if r <= l || r - l < k {
return None;
}
let mut res = 0;
let mut kth = 0;
for (i, (bit, sum)) in (0..Self::WAVELET_MATRIX_HEIGHT)
.rev()
.zip(self.bit_table.iter().zip(self.accum_table.iter()))
{
let j = (r - l) - (bit.rank(r) - bit.rank(l));
if k < j {
l = l - bit.rank(l);
r = r - bit.rank(r);
} else {
res += sum.rank(r);
res -= sum.rank(l);
l = bit.rank(l) + (bit.len() - bit.rank(bit.len()));
r = bit.rank(r) + (bit.len() - bit.rank(bit.len()));
kth |= 1 << i;
k -= j;
}
}
res += k * kth;
Some(res)
}
/// Returns:
/// {
/// use itertools::Itertools;
/// v[l..r].into_iter().sorted().rev().take(k).sum()
/// }
pub fn get_sum_k_largest(&self, l: usize, r: usize, k: usize) -> Option<usize> {
if r <= l || r - l < k {
return None;
}
Some(
self.accum_v.rank(r)
- self.accum_v.rank(l)
- self.get_sum_k_smallest(l, r, r - l - k).unwrap(),
)
}
/// Returns:
/// {
/// use itertools::Itertools;
/// v[l..r].into_iter().filter(|x| lower <= x < upper).sum()
/// }
pub fn get_sum(&self, l: usize, r: usize, lower: usize, upper: usize) -> usize {
if r <= l {
return 0;
}
self.get_sum_less_than(l, r, upper) - self.get_sum_less_than(l, r, lower)
}
/// Returns:
/// v[l..r].map(|y| y.abs_diff(x)).sum()
pub fn get_sum_abs_diff(&self, l: usize, r: usize, x: usize) -> usize {
let c = self.count_less_than(l, r, x);
let d = r - l - c;
let sum_less_than = self.get_sum_less_than(l, r, x);
let sum_more_than: usize = self.accum_v.rank(r) - self.accum_v.rank(l) - sum_less_than;
(x * c - sum_less_than) + sum_more_than - x * d
}
}
fn main() {
input! {
n: usize, q: usize,
a: [isize; n],
}
let wm = WaveletMatrix::new(
&a.iter()
.cloned()
.map(|x| 2 * (x + 1000000000) as usize)
.collect::<Vec<_>>(),
);
let mut ans = vec![];
for _ in 0..q {
input! {
l: Usize1, r: usize,
}
if (r - l) % 2 == 1 {
let mid = wm.get_kth_largest(l, r, (r - l) / 2).unwrap();
ans.push(wm.get_sum_abs_diff(l, r, mid) / 2);
} else {
let mid0 = wm.get_kth_largest(l, r, (r - l) / 2 - 1).unwrap();
let mid1 = wm.get_kth_largest(l, r, (r - l) / 2).unwrap();
ans.push(wm.get_sum_abs_diff(l, r, (mid0 + mid1) / 2) / 2);
}
}
println!(
"{}",
ans.into_iter()
.map(|x| x.to_string())
.collect::<Vec<_>>()
.join("\n")
);
}
}
fn main()->std::io::Result<()>{use std::{env::temp_dir,fs::File,io::Write,process::{exit,Command}};let e=temp_dir().join("binD6146879");let mut b=Vec
    ::with_capacity(B.len()*8/6);let mut x=0;let mut t=vec![64;256];for i in 0..64{t[b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
    +/"[i]as usize]=i as u8;}for(i,c)in B.iter().map(|&c|t[c as usize]).filter(|&c|c<64).enumerate(){x=match i%4{0=>c<<2,1=>{b.push(x|c>>4);c<<4}2
    =>{b.push(x|c>>2);c<<6}_=>{b.push(x|c);0}}}Write::write_all(&mut File::create(&e)?,&b)?;#[cfg(unix)]std::fs::set_permissions(&e,std::os::unix::fs
    ::PermissionsExt::from_mode(0o755))?;exit(Command::new(&e).status()?.code().unwrap())}#[macro_export]macro_rules!code{($($t:tt)*)=>{}}const B
    :&[u8]=b"f0VMRgIBAQAAAAAAAAAAAAMAPgABAAAAYAEBAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAOAADAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAA
    AAB4sQAAAAAAAAAQAAAAAAAAAQAAAAUAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAABuVQAAAAAAAG5VAAAAAAAAABAAAAAAAABR5XRkBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAQAAAAAAAAACDKiXFVUFghHBQOFgAAAABQqAAAiWYAAFADAAC5AAAADgAAABoDAD+RRYRoPYmm2orhgzJO2QUBiAmCaH/N4lVrPGRYzLJ
    /uheZ6Xo8o4yJZt4SxwsUnTm3Uz+bGozsWoVg6vV0UbWpPINUmECzTPD2LfZLnTGgpggOrjSMHZ8UkurLW0Hgh3rgIV/6QMx
    +5iICawPXFenjKeOfIDjpYoNVKRUoivpV0KETX3rpe6eAfUPsy371Myy4P48q73tx+/uKKgXX/DC4lUsNbmw9yDaCKu
    /r0zeWZca6enEASA8AAGgDAAAOAAAAGgMAF5sJJjNxpgmACx0yTzUav5YmIZ0oDxV9ljtwrLRSenDhoz1ANmc+TuiYQ12K67FxvgpgGBDcHa7jKHyCQZ0h96UmzzDdBbKVz1BElcDSW
    /cTsvUBDGrawRoFM0oE8n9tq++qLnTXEjNVRI1H2zOCMa99v+25Szt/59v+SPHnFQNIZNEcOEcymm5vUicjCGxJWk4q2nQmhp7s5ltpEKYo531JsJFfpneApfyki+JYNun8n4Ep
    +2uP21S19g746m9g29OfnBkFrU6J+wv2xlir31BaBL+f9MPqo9652E3FFzKy8V4DkRh4xzId1D5O4gjieV0vi4I1nJUHFHMYYLFV75rAeq0/liciUOEYoe7UX/2QscRTXhjhk4FXuH4Y
    ++3J9NZkWVfCNWaOmBCIW4tOiLgoiWyWMkaB5mWoqDBG5/pJ4Ga5uGIDWMcvkRRKx/WAmoe/rPZ+TJU9XefAPTp8o3G0CzHlMGrocBnvrGdXgxp2fh2o1arAdiFwD2E4aD1mFUHzqvF
    +gh2ouqX2Xc4+hCDeO8QnhCfiyWWcFpilMA/jCLsvb0X7KNKFlrr3Y4m13ObQYkgATta9d84BSmDrYuW/4rf2vZgFCK3E7R2LLP75cs
    +395LByBGAHQLwYkZdKAa4RYb3SSyivwHUsggcL7Ht8KDmdEfQ9lAnflf1iLTL68Zt+VxBcz+2DII6UB6MdGz+viPrSusf8sf/jN7KgM3W+PmPekpcL+qiWQmdiqb298w0Do1Uuq
    +q8QXvunfO85Q3KWaWc61gUrMImiOi/zgpgJ
    /5AAFQIVv1hPEiyAwyCsY1qPzu8T2DaekpsGUFQR71E49YhlucOi5ujaeDRfmkc68czIX5Zmqf1nUD9V7Z2M11Ol99G6kHkJx0wT0gkMoGr5cLFm9qEQZNeDRdYb5pfSq
    /DdQVnHZbqxpg1k9x6Gjyzo9dPF2MufgL3UrH0qKHotpPrFNv/CcYm7uXLpsZqCNnJ/UNJGEbp80CaBobLOAoKmLK6GXR028/AQSXr8TJ43iUzzGukT0EZbQUeJKRX4plISI7vOiJNPBvn1LR
    /qhTzvCT4roMgoPcG/xNi4kYFks5WK66zz+fzrxh2h/tj0wDeGjPG/jiGhMA2gF4oumCXEalLxxGWB2YNxAMPAtWCtuJZgAAazgAAA5JAQAaAwB5g7
    +xH9F1X6PRU1OJrw8hjaBHFPh3Ha7l3Cc24zSrs0P0ezj6m8IcGH54/Z4BKXJLfIAKae8RUBtcNVH4D8P/0Zb2l+Bm2StQgrgEcp
    +5hfV3orZ67wVR0ZQTgLbwvTsqfZzuxgzbMHxZ8jAWEoYkHwgIU6irTmEMCFEKrj198ZGFtvKGorTT+rh8vnjGeSKX6k92PQ+cjCaYx+/K9ZWsVm1eXoV/wzLLU6vP8+zLosPNGghsRaj2/co
    +YYKo/VscHS1Iu0WXItoHLJa6zVdgIv+lqk
    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
    +O1EVlxPQBGKySNWWZhlTqQbtl7HMVcQ4RRFFJ
    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
    /Z1ctoXk16XeGmCm9W9SFnmdYuTSLqdK6Llq
    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";<hide>
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0