Submission #1352699

#TimeUsernameProblemLanguageResultExecution timeMemory
1352699bakhtiyarnSum Zero (RMI20_sumzero)C++20
0 / 100
20 ms47424 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int N = 3e5+5;
int a[N], pre[N];
vector<array<int, 2>> range[N];

// for(int i=1; i<=n; i++)
void solve(){
    int n; cin >> n;
    for(int i=1; i<=n; i++) cin >> a[i], pre[i] = pre[i-1] + a[i];

    map<int, int> last, dp;
    for(int i=n; i>=1; i--){
        last[pre[i]] = i;
        dp[i] = dp[i+1];
        range[i] = range[i+1];

        if(last[pre[i-1]] and dp[i] < dp[last[pre[i-1]]+1] + 1) {
            dp[i] = dp[last[pre[i-1]]+1] + 1;
            range[last[pre[i]]].clear();
            range[i] = {{i, last[pre[i-1]]}};
            for(auto j: range[last[pre[i-1]]+1]) range[i].push_back(j);
        }
    }

    int q; cin >> q;
    while(q--){
        int l, r; cin >> l >> r;
        // unordered_map<int, int> last;
        // vector<int> dp(n+2);
        // for(int i=r; i>=l; i--){
        //     last[pre[i]] = i;
        //     dp[i] = dp[i+1];
        //     if(last[pre[i-1]]) dp[i] = max(dp[i], dp[last[pre[i-1]]+1] + 1);
        //     // cout << dp[i] << ' ';
        // }
        // cout << dp[l] << endl;
    }
}

signed main() {
 ios_base::sync_with_stdio(0);
 cin.tie(0);
 cout.tie(0);
 solve();
}



#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...