Submission #1297580

#TimeUsernameProblemLanguageResultExecution timeMemory
1297580random_nameSum Zero (RMI20_sumzero)C++20
22 / 100
1093 ms5784 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main(){ int n;cin>>n; vector<int> A(n); for(int &i:A) cin>>i; int q;cin>>q; vector<pair<int, int>> Q(q); for(int i=0;i<q;i++){ cin>>Q[i].first>>Q[i].second; } vector<ll> pref(n+1); for(int i=0;i<n;i++){ pref[i+1] = pref[i] + A[i]; } vector<int> next(n+1); map<ll, int> lasts; for(int i=n;i>=0;i--){ if(lasts.count(pref[i]) == 0){ next[i] = n+1; } else{ next[i] = lasts[pref[i]]; } lasts[pref[i]] = i; } for(int i=0;i<q;i++){ vector<int> mns(n+1); int a = Q[i].first, b = Q[i].second; mns[b] = 0; for(int j=b-1; j>=a-1; j--){ if(next[j] > b) mns[j] = max(mns[j+1], 0); else mns[j] = max(mns[j+1], mns[next[j]]+1); } // for(ll i:mns) // cout << i << ' '; // cout << '\n'; cout << mns[a-1] << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...