69112023-12-19 17:13:42111Jó intervallumokcpp17Hibás válasz 0/100136ms21376 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define double long double

#define pii pair<int, int>

struct Fenwick {
	vector<int> v;
 
	Fenwick(int n) : v(n) {
	}
 
	void add(int i, int x) {
		for (int j = i; j < v.size(); j += j & -j) {
			v[j] += x;
		}
	}
 
	int sum(int i) {
		int x = 0;
		for (int j = i; j > 0; j -= j & -j) {
			x += v[j];
		}
		return x;
	}
};


signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
#ifdef CB
	freopen("in.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
#endif
	int T;
	cin >> T;
	while (T--) {
		int N;
		cin >> N;
		vector<int> v(N + 1);
		for (int i = 1; i <= N; i++) {
			cin >> v[i];
		}
		vector<int> d(N + 1, 1);
		vector<int> e(N + 1);
		for (int i = 1; i <= N; i++) {
			while (i + d[i] <= N && v[i + d[i]] % (d[i] + 1) == 0) {
				d[i]++;
			}
			e[i + d[i] - 1]++;
		}
		Fenwick f(N + 1);
		for (int i = 1, s = 0; i <= N; i++) {
			s++;
			f.add(i, s);
			s -= e[i];
		}
		int Q;
		cin >> Q;
		vector<vector<pii>> w(N + 1);
		for (int i = 0; i < Q; i++) {
			int L, R;
			cin >> L >> R;
			w[L].push_back({R, i});
		}
		vector<int> ans(Q);
		for (int i = 1, s = 0, c = 0; i <= N; i++) {
			for (auto [j, q] : w[i]) {
				ans[q] = f.sum(j) - f.sum(i - 1);
			}
			for (int j = i + 1; j < i + d[i]; j++) {
				f.add(j, -1);
			}
			f.add(i + d[i], d[i] - 1);
		}
		for (int i = 0; i < Q; i++) {
			cout << ans[i] << '\n';
		}
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
subtask20/10
2Hibás válasz3ms2056 KiB
3Hibás válasz3ms2144 KiB
4Hibás válasz3ms2348 KiB
5Hibás válasz3ms2576 KiB
6Hibás válasz3ms2652 KiB
subtask30/20
7Hibás válasz30ms3440 KiB
8Hibás válasz32ms4208 KiB
9Hibás válasz32ms5380 KiB
10Hibás válasz32ms6212 KiB
11Hibás válasz35ms9296 KiB
subtask40/30
12Hibás válasz63ms5048 KiB
13Hibás válasz83ms6744 KiB
14Hibás válasz67ms9280 KiB
15Hibás válasz90ms12480 KiB
16Hibás válasz93ms21256 KiB
subtask50/40
17Hibás válasz67ms5416 KiB
18Hibás válasz83ms7220 KiB
19Hibás válasz71ms9616 KiB
20Hibás válasz89ms12760 KiB
21Hibás válasz136ms21376 KiB