結果
問題 | No.2758 RDQ |
ユーザー |
|
提出日時 | 2024-05-17 22:04:45 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 357 ms / 2,000 ms |
コード長 | 2,335 bytes |
コンパイル時間 | 20,358 ms |
コンパイル使用メモリ | 396,284 KB |
実行使用メモリ | 199,424 KB |
最終ジャッジ日時 | 2024-12-20 15:45:43 |
合計ジャッジ時間 | 20,506 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
#![allow(unused_imports)]#![allow(unused_macros)]#![allow(non_snake_case)]use proconio::marker::{Bytes, Chars, Isize1, Usize1};use proconio::{fastout, input, input_interactive};const BUCKET_SIZE: usize = 200;#[fastout]fn main() {input! {N: usize,Q: usize,A: [usize; N],}let bucket_memo = {let mut memo = mat![0; (N + BUCKET_SIZE - 1) / BUCKET_SIZE; 100_001];for (i, &a) in A.iter().enumerate() {let bucket = i / BUCKET_SIZE;for d in 1.. {if d * d > a {break;}if a % d == 0 {memo[bucket][d] += 1;if a / d != d {memo[bucket][a / d] += 1;}}}}memo};for _ in 0..Q {input! {L: Usize1,R: Usize1,K: usize,}let l_bucket = L / BUCKET_SIZE;let r_bucket = R / BUCKET_SIZE;let memo_ans = (l_bucket + 1..r_bucket).map(|i| bucket_memo[i][K]).sum::<usize>();let left_ans = (L..((l_bucket+1)*BUCKET_SIZE).min(R+1)).map(|i| (A[i] % K == 0) as usize).sum::<usize>();let right_ans = if l_bucket < r_bucket {((r_bucket*BUCKET_SIZE).max(L)..(R+1)).map(|i| (A[i] % K == 0) as usize).sum::<usize>()} else {0};println!("{}", memo_ans + left_ans + right_ans);}}#[macro_export]macro_rules! mat {($($e:expr),*) => { vec![$($e),*] };($($e:expr,)*) => { vec![$($e),*] };($e:expr; $d:expr) => { vec![$e; $d] };($e:expr; $d:expr $(; $ds:expr)+) => { vec![mat![$e $(; $ds)*]; $d] };}#[macro_export]macro_rules! chmin {($a:expr, $b:expr) => {if $a > $b {$a = $b;true} else {false}};}#[macro_export]macro_rules! chmax {($a:expr, $b:expr) => {if $a < $b {$a = $b;true} else {false}};}/// https://maguro.dev/debug-macro/#[macro_export]macro_rules! debug {($($a:expr),* $(,)*) => {#[cfg(debug_assertions)]eprintln!(concat!($("| ", stringify!($a), "={:?} "),*, "|"), $(&$a),*);};}