Submission #927413

#TimeUsernameProblemLanguageResultExecution timeMemory
927413TAhmed33Sum Zero (RMI20_sumzero)C++98
61 / 100
1045 ms12216 KiB
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 4e5 + 25;
typedef long long ll;
int p[MAXN];
int n; pair <ll, int> d2[MAXN];
int ans[MAXN];
int main () {
	ios::sync_with_stdio(0); cin.tie(0);
	cin >> n; 
	for (int i = 0; i <= n + 1; i++) p[i] = n + 1;
	ll cur = 0; d2[0] = {0, 0};
	for (int i = 1; i <= n; i++) {
		ll x; cin >> x; cur += x; d2[i] = {cur, i};
	}
	sort(d2, d2 + n + 1);
	for (int i = 0; i < n; i++) {
		if (d2[i].first == d2[i + 1].first) {
			p[d2[i].second] = d2[i + 1].second;
		}
	}
	for (int i = n; i >= 0; i--) {
		p[i] = min(p[i], p[i + 1]);
	}
	int q; cin >> q;
	while (q--) {
		int l, r; cin >> l >> r;
		l--;
		int ans = 0;
		while (p[l] <= r) {
			l = p[l]; ans++;
		}
		cout << ans << '\n';
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...