Submission #1243108

#TimeUsernameProblemLanguageResultExecution timeMemory
1243108asdfghqwertSum Zero (RMI20_sumzero)C++20
0 / 100
12 ms892 KiB
#pragma GCC optimize("O3,unroll-loops,fast-math")
//#pragma GCC optimize("O3,Ofast")
//#pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int32_t main(){
    int n ;cin >> n;
    const int lg = 23;
    const int N = n + 10;
    int dp[N][lg] , arr[N] , lst = 1 , val = 0;
    memset(dp , 0 , sizeof(dp));
    map<int , int> mp;mp[0] = 0;
    for(int i = 1 ; i <= n ; i++){
        cin >> arr[i];
        val += arr[i];
        arr[i] = val;
        if(mp.count(arr[i])){
            int k = mp[arr[i]];
            for(int j = lst ; j <= k + 1; j++){
                dp[j][0] = i;
                mp.erase(arr[j]);
            }
            lst = k + 2;
            mp[0] = k + 1;
        }mp[arr[i]] = i;
    }
    for(int i = 1 ; i < lg ; i++){
        for(int j = 1 ; j <= n ; j++){
            dp[j][i] = dp[dp[j][i - 1] + 1][i - 1];
        }
    }
    int q; cin >> q;
    while(q--){
        int cur ,r , ans = 0;
        cin >> cur >> r;
        for(int j = lg - 1 ; j >= 0 ; j--){
            if(dp[cur][j] <= r && dp[cur][j] > 0){
                ans += (1 << j);
                cur = dp[cur][j] + 1;
            }
        }
        cout << ans << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...