Submission #516989

#TimeUsernameProblemLanguageResultExecution timeMemory
516989StickfishSum Zero (RMI20_sumzero)C++17
22 / 100
1065 ms4484 KiB
#include <iostream> #include <map> #include <vector> using namespace std; using ll = long long; const int MAXN = 100000; int a[MAXN]; signed main() { int n; cin >> n; for (int i = 0; i < n; ++i) cin >> a[i]; map<ll, int> mp; mp[0] = -1; ll psm = 0; for (int i = 0; i < n; ++i) { psm += a[i]; if (mp.find(psm) == mp.end()) { a[i] = -2; } else { a[i] = mp[psm]; } if (i && a[i - 1] > a[i]) a[i] = a[i - 1]; mp[psm] = i; } int q; cin >> q; while (q--) { int l, r; cin >> l >> r; --l; vector<int> dp_(r - l, 0); auto dp = dp_.begin() - l; for (int i = l; i < r; ++i) { if (i) dp[i] = dp[i - 1]; if (a[i] + 1 >= l) dp[i] = max(dp[i], dp[a[i]] + 1); } cout << dp[r - 1] << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...