제출 #1144145

#제출 시각아이디문제언어결과실행 시간메모리
1144145raphaeltfaSum Zero (RMI20_sumzero)C++20
61 / 100
850 ms41896 KiB
#include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <map> using namespace std; int main(){ int n; cin >> n; vector<vector<int>> up(18, vector<int> (n + 1, -1)); if(true){ vector<long> arr(n + 1, 0); map<long, int> lastSeen; 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 < 18; 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...