Submission #1177121

#TimeUsernameProblemLanguageResultExecution timeMemory
1177121altern23Sum Zero (RMI20_sumzero)C++17
22 / 100
90 ms25156 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<ll, ll> #define fi first #define sec second #define ld long double const int MAXN = 1e5; const ll INF = 4e18; const int MOD = 1e9 + 7; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tc = 1; // cin >> tc; for(;tc--;){ ll N; cin >> N; vector<ll> a(N + 5), ps(N + 5); for(int i = 1; i <= N; i++){ cin >> a[i]; ps[i] = ps[i - 1] + a[i]; } vector<vector<ll>> up(N + 5, vector<ll>(20)); map<ll, ll> mp; vector<ll> dp(N + 5, N + 1); for(int i = N; i >= 0; --i){ dp[i] = dp[i + 1]; if(mp.count(ps[i])){ dp[i] = min(dp[i], mp[ps[i]]); } mp[ps[i]] = i; up[i][0] = dp[i]; } for(int LOG = 0; LOG < 20; LOG++){ up[N + 1][LOG] = N + 1; } for(int LOG = 1; LOG < 20; LOG++){ for(int i = 0; i <= N; i++){ up[i][LOG] = up[up[i][LOG - 1]][LOG - 1]; } } ll Q; cin >> Q; for(int i = 1; i <= Q; i++){ ll l, r; cin >> l >> r; ll cur = l - 1, ans = 0; for(int LOG = 19; LOG >= 0; --LOG){ if(up[cur][LOG] <= r){ ans += (1LL << LOG); cur = up[cur][LOG]; } } cout << ans << "\n"; } } } /* */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...