Submission #1137954

#TimeUsernameProblemLanguageResultExecution timeMemory
1137954AMnuSum Zero (RMI20_sumzero)C++20
61 / 100
55 ms11336 KiB

#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<pii,ll> piii;
typedef pair<pii,pii> piiii;

const int MAXN = 1e5+5, LOG = 17;

int N, Q, A, L, R, par[MAXN][LOG];
ll P[MAXN];
map <ll,int> last;

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> N;
    for (int i=1;i<=N;i++) {
        cin >> A;
        P[i] = P[i-1]+A;
    }
    L = N+1;
    for (int i=0;i<LOG;i++) {
        par[L][i] = L;
    }
    for (int i=N;i>=0;i--) {
        if (last.count(P[i])) {
            L = min(L,last[P[i]]);
        }
        last[P[i]] = i;
        par[i][0] = L;
        for (int j=1;j<LOG;j++) {
            par[i][j] = par[par[i][j-1]][j-1];
        }
    }
    cin >> Q;
    for (int i=1;i<=Q;i++) {
        cin >> L >> R;
        L--;
        A = 0;
        for (int j=LOG-1;j>=0;j--) {
            if (par[L][j] <= R) {
                A += 1<<j;
                L = par[L][j];
            }
        }
        cout << A << "\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...