結果
問題 | No.2758 RDQ |
ユーザー | CoCo_Japan_pan |
提出日時 | 2024-05-17 22:04:45 |
言語 | Rust (1.77.0 + proconio) |
結果 |
AC
|
実行時間 | 316 ms / 2,000 ms |
コード長 | 2,335 bytes |
コンパイル時間 | 11,436 ms |
コンパイル使用メモリ | 391,700 KB |
実行使用メモリ | 199,296 KB |
最終ジャッジ日時 | 2024-05-17 23:45:22 |
合計ジャッジ時間 | 17,399 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 265 ms
198,528 KB |
testcase_01 | AC | 1 ms
6,940 KB |
testcase_02 | AC | 1 ms
6,940 KB |
testcase_03 | AC | 1 ms
6,944 KB |
testcase_04 | AC | 1 ms
6,944 KB |
testcase_05 | AC | 1 ms
6,940 KB |
testcase_06 | AC | 230 ms
198,656 KB |
testcase_07 | AC | 232 ms
198,656 KB |
testcase_08 | AC | 230 ms
198,784 KB |
testcase_09 | AC | 233 ms
198,656 KB |
testcase_10 | AC | 229 ms
198,656 KB |
testcase_11 | AC | 303 ms
199,296 KB |
testcase_12 | AC | 307 ms
199,296 KB |
testcase_13 | AC | 311 ms
199,296 KB |
testcase_14 | AC | 308 ms
199,296 KB |
testcase_15 | AC | 305 ms
199,296 KB |
testcase_16 | AC | 304 ms
199,296 KB |
testcase_17 | AC | 306 ms
199,296 KB |
testcase_18 | AC | 316 ms
199,296 KB |
testcase_19 | AC | 307 ms
199,296 KB |
testcase_20 | AC | 303 ms
199,296 KB |
testcase_21 | AC | 1 ms
6,940 KB |
testcase_22 | AC | 1 ms
6,944 KB |
testcase_23 | AC | 1 ms
6,940 KB |
ソースコード
#![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),*); }; }