Submission #853988

# Submission time Handle Problem Language Result Execution time Memory
853988 2023-09-25T18:15:12 Z divad Sum Zero (RMI20_sumzero) C++14
100 / 100
925 ms 16464 KB
#include <bits/stdc++.h>
#define ends saradanciu
using namespace std;
const int BASE = 128;
const int LMAX = 2;
const int NMAX = 4e5+2;
int n,q,c,x,y,nxt[LMAX][NMAX];
int ends[NMAX],pwr[LMAX];

ifstream fin("test.in");
ofstream fout("test.out");

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    pwr[0] = 1;
    for(int i = 1; i < LMAX; i++){
        pwr[i] = pwr[i-1]*BASE;
    }
    cin >> n;
    map<int, int> mp;
    int pref = 0;
    mp[pref] = 0;
    for(int i = 1; i <= n; i++){
        cin >> c;
        pref += c;
        if(mp.count(pref)){
            ends[mp[pref]+1] = i;
        }
        mp[pref] = i;
    }
    int mini = n+1;
    nxt[0][n+1] = n+2;
    for(int i = n; i >= 1; i--){
        if(ends[i] != 0){
            mini = min(mini, ends[i]);
        }
        nxt[0][i] = mini+1;
    }
    for(int j = 1; j < LMAX; j++){
        for(int i = 1; i <= n+1; i++){
            nxt[j][i] = i;
            for(int k = 1; k <= BASE; k++){
                nxt[j][i] = nxt[j-1][nxt[j][i]];
            }
            nxt[j][i] = (nxt[j][i] == 0 ? n+2 : nxt[j][i]);
        }
    }
    cin >> q;
    int ct = 0;
    while(q--){
        cin >> x >> y;
        int ans = 0;
        for(int i = LMAX-1; i >= 0; i--){
            while(nxt[i][x]-1 <= y){
                ans += pwr[i];
                x = nxt[i][x];
            }
        }
        cout << ans << "\n";
    }
    return 0;
}

Compilation message

sumzero.cpp: In function 'int main()':
sumzero.cpp:51:9: warning: unused variable 'ct' [-Wunused-variable]
   51 |     int ct = 0;
      |         ^~
# Verdict Execution time Memory Grader output
1 Correct 4 ms 4696 KB Output is correct
2 Correct 4 ms 4700 KB Output is correct
3 Correct 5 ms 4696 KB Output is correct
4 Correct 4 ms 4700 KB Output is correct
5 Correct 4 ms 4696 KB Output is correct
6 Correct 7 ms 4696 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 4696 KB Output is correct
2 Correct 4 ms 4700 KB Output is correct
3 Correct 5 ms 4696 KB Output is correct
4 Correct 4 ms 4700 KB Output is correct
5 Correct 4 ms 4696 KB Output is correct
6 Correct 7 ms 4696 KB Output is correct
7 Correct 96 ms 6992 KB Output is correct
8 Correct 75 ms 7328 KB Output is correct
9 Correct 101 ms 5464 KB Output is correct
10 Correct 99 ms 6888 KB Output is correct
11 Correct 73 ms 6752 KB Output is correct
12 Correct 100 ms 5872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 4696 KB Output is correct
2 Correct 4 ms 4700 KB Output is correct
3 Correct 5 ms 4696 KB Output is correct
4 Correct 4 ms 4700 KB Output is correct
5 Correct 4 ms 4696 KB Output is correct
6 Correct 7 ms 4696 KB Output is correct
7 Correct 96 ms 6992 KB Output is correct
8 Correct 75 ms 7328 KB Output is correct
9 Correct 101 ms 5464 KB Output is correct
10 Correct 99 ms 6888 KB Output is correct
11 Correct 73 ms 6752 KB Output is correct
12 Correct 100 ms 5872 KB Output is correct
13 Correct 925 ms 14632 KB Output is correct
14 Correct 371 ms 16464 KB Output is correct
15 Correct 836 ms 7812 KB Output is correct
16 Correct 808 ms 16212 KB Output is correct
17 Correct 346 ms 13904 KB Output is correct
18 Correct 831 ms 14932 KB Output is correct