Submission #1144139

#TimeUsernameProblemLanguageResultExecution timeMemory
1144139raphaeltfaSum Zero (RMI20_sumzero)C++20
0 / 100
2 ms832 KiB
#include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <map> using namespace std; int main(){ int n; map<long long, int> lastSeen; cin >> n; vector<long long> arr(n + 1, 0); vector<vector<int>> up(18, vector<int> (n + 1, -1)); for(int i = 1; i <= n; i++){ cin >> arr[i]; arr[i] += arr[i - 1]; if(lastSeen[arr[i]] == 0 && arr[i] != 0) lastSeen[arr[i]] = -1; up[0][i] = max(up[0][i - 1], lastSeen[arr[i]]); lastSeen[arr[i]] = i; } for(int i = 1; i < 20; i++){ for(int j = 1; j <= n; j++){ if(up[i - 1][j] != -1) up[i][j] = up[i - 1][up[i - 1][j]]; } } int m; cin >> m; for(int test = 0; test < m; test++){ int a, b, k = 0; cin >> a >> b; for(int i = 17; i >= 0; i--){ if(up[i][b] >= a - 1){ k |= (1 << i); b = up[i][b]; } if(b == -1) break; } cout << k << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...