結果

問題 No.1496 不思議な数え上げ
ユーザー 37kt
提出日時 2024-11-26 11:36:59
言語 Rust
(1.83.0 + proconio)
結果
WA  
実行時間 -
コード長 1,310 bytes
コンパイル時間 17,001 ms
コンパイル使用メモリ 378,520 KB
実行使用メモリ 15,872 KB
最終ジャッジ日時 2024-11-26 11:37:35
合計ジャッジ時間 31,147 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 25 WA * 14
権限があれば一括ダウンロードができます

ソースコード

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

use std::collections::BTreeSet;
#[allow(unused_imports)]
use proconio::{
input,
marker::{Bytes, Chars, Usize1},
};
fn main() {
input! {
n: usize,
mut p: [usize; n],
a: [usize; n],
}
p.insert(0, 0);
p.push(0);
let mut q = vec![0; n + 1];
for i in 1..=n {
q[p[i]] = i;
}
let mut csum = vec![0; p.len() + 1];
for i in 0..p.len() {
csum[i + 1] = csum[i] + p[i];
}
let mut st = BTreeSet::from([0, n + 1]);
for i in 1..=n {
let m = q[i];
let mut s = a[i - 1];
let l = *st.range(..m).next_back().unwrap();
let r = *st.range(m..).next().unwrap();
st.insert(m);
let mut res = 0;
if m - l <= r - m {
for &x in p[l + 1..=m].iter().rev() {
if s < x {
break;
}
s -= x;
res += csum[m + 1..=r].partition_point(|&c| c - csum[m + 1] <= s);
}
} else {
for &x in &p[m..r] {
if s < x {
break;
}
s -= x;
let t = (m - l) - csum[l + 1..=m].partition_point(|&c| csum[m] - c >= s);
res += t;
}
}
println!("{}", res);
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0