Submission #1140743

#TimeUsernameProblemLanguageResultExecution timeMemory
1140743azaylibelzSum Zero (RMI20_sumzero)C++20
100 / 100
510 ms14148 KiB
#include <iostream> #include <string> #include <stdio.h> #include <vector> #include <map> #include <algorithm> #include <numeric> #include <cmath> #include <iterator> #include <stack> #include <queue> #include <set> using namespace std; typedef int ll; typedef long double ld; const ll MOD = 1e9 + 7; const ll lg = 4, maxn = 4e5 + 1, Base = 32; int sparseTable[maxn][lg], power[lg]; signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); power[0] = 1; for (int i = 1; i < lg; i++) power[i] = Base * power[i - 1]; ll n; cin >> n; vector<ll> arr(n); for(ll i = 0; i < n; i++) cin >> arr[i]; for(ll i = 0; i <= n + 1; i++) { for(ll j = 0; j < lg; j++) { sparseTable[i][j] = n + 1; } } long long sm = 0; vector<long long> pSum; pSum.push_back(0); for(ll i = n - 1; i >= 0; i--) { sm += arr[i]; pSum.push_back(sm); } sort(pSum.begin(), pSum.end()); pSum.resize(unique(pSum.begin(), pSum.end()) - pSum.begin()); sm = 0; vector<ll> go(pSum.size(), n + 1); go[lower_bound(pSum.begin(), pSum.end(), sm) - pSum.begin()] = n; for(ll i = n - 1; i >= 0; i--) { sm += arr[i]; sparseTable[i][0] = go[lower_bound(pSum.begin(), pSum.end(), sm) - pSum.begin()]; go[lower_bound(pSum.begin(), pSum.end(), sm) - pSum.begin()] = i; } for(ll i = n - 2; i >= 0; i--) { sparseTable[i][0] = min(sparseTable[i][0], sparseTable[i + 1][0]); } for (ll j = 1; j < lg; j++) { for (ll i = 0; i < n; i++) { ll x = i; for(ll k = 0; k < Base; k++) x = sparseTable[x][j - 1]; sparseTable[i][j] = x; } } ll q; cin >> q; for(ll i = 0; i < q; i++) { ll l, r, res = 0; cin >> l >> r; l--; ll x = lg - 1; while(x >= 0) { if(sparseTable[l][x] <= r) { res += power[x]; l = sparseTable[l][x]; } else { x--; } } cout << res << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...