Submission #942629

#TimeUsernameProblemLanguageResultExecution timeMemory
942629huutuanSum Zero (RMI20_sumzero)C++14
22 / 100
1055 ms5780 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; const int N=4e5+10, LG=8; int n, a[N], nxt[N]; pair<ll, int> pf[N]; int st[LG][N]; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n; pf[0]={0, 0}; for (int i=1; i<=n; ++i) cin >> a[i], pf[i]={pf[i-1].first+a[i], i}, nxt[i]=n+1; sort(pf, pf+n+1); for (int i=0; i<=n; ++i){ int j=i; while (j<n && pf[j+1].first==pf[i].first) ++j; for (int k=i; k<j; ++k) nxt[pf[k].second+1]=pf[k+1].second; i=j; } int q; cin >> q; while (q--){ int l, r; cin >> l >> r; vector<pair<int, int>> v, vv; for (int i=l; i<=r; ++i) if (nxt[i]<=r) vv.emplace_back(i, nxt[i]); sort(vv.begin(), vv.end(), [&](pair<int, int> x, pair<int, int> y){ return x.second<y.second; }); for (auto &i:vv){ if (v.empty() || i.first>v.back().second) v.push_back(i); } cout << v.size() << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...