結果
問題 | No.2758 RDQ |
ユーザー |
|
提出日時 | 2024-05-17 21:59:16 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 227 ms / 2,000 ms |
コード長 | 1,147 bytes |
コンパイル時間 | 2,337 ms |
コンパイル使用メモリ | 209,948 KB |
最終ジャッジ日時 | 2025-02-21 14:49:07 |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
#include <atcoder/fenwicktree>#include <bits/stdc++.h>using namespace std;using ll = long long;#define rep(i, n) for (int i = 0; i < (int)(n); i++)const ll MX = 100'010;void solve() {ll n, q;cin >> n >> q;vector<ll> a(n);vector<vector<ll>> is(MX);rep(i, n) {cin >> a[i];for (ll j = 1; j * j <= a[i]; j++) {if (a[i] % j)continue;is[j].push_back(i);if (j != a[i] / j)is[a[i] / j].push_back(i);}}vector qs(MX, vector<tuple<ll, ll, ll>>());rep(qi, q) {ll l, r, k;cin >> l >> r >> k;qs[k].emplace_back(l, r, qi);}atcoder::fenwick_tree<ll> bit(MX);vector<ll> ans(q, 0);rep(val, MX - 5) {if (is[val].empty() || qs[val].empty())continue;for (const auto i : is[val])bit.add(i, 1);for (const auto &[l, r, qi] : qs[val])ans[qi] = bit.sum(l - 1, r);for (const auto i : is[val])bit.add(i, -1);}rep(i, ans.size()) cout << ans[i] << '\n';}int main() {std::cin.tie(nullptr);std::ios_base::sync_with_stdio(false);int T = 1;for (int t = 0; t < T; t++) {solve();}return 0;}