結果

問題 No.3101 Range Eratosthenes Query
ユーザー shobonvip
提出日時 2025-03-18 04:21:47
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 435 ms / 3,000 ms
コード長 728 bytes
コンパイル時間 2,193 ms
コンパイル使用メモリ 206,376 KB
実行使用メモリ 80,992 KB
最終ジャッジ日時 2025-03-18 05:24:06
合計ジャッジ時間 11,584 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 24
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;
#include<atcoder/fenwicktree>

const int mx = 1000000;

int main() {
	vector<int> xp(mx+1);
	vector bc(mx+1, vector<int>(0));
	vector bc_q(mx+1, vector<pair<int,int>>(0));

	for (int i=1; i<=mx; i++) {
		for (int j=2*i; j<=mx; j+=i) {
			xp[j] = i;
		}
	}

	for (int i=1; i<=mx; i++) {
		bc[xp[i]].push_back(i);
	}

	int q; cin >> q;
	for (int i=0; i<q; i++) {
		int l, r; cin >> l >> r;
		bc_q[l].push_back(pair(r, i));
	}

	vector<int> ans(q);
	atcoder::fenwick_tree<int> fw(mx+1);

	for (int i=0; i<=mx; i++) {
		for (auto [r,c]: bc_q[i]) {
			ans[c] = fw.sum(i, r+1);
		}
		for (int j: bc[i]) {
			fw.add(j, +1);
		}
	}

	for (int i=0; i<q; i++) {
		cout << ans[i] << '\n';
	}
}
0