제출 #979008

#제출 시각아이디문제언어결과실행 시간메모리
979008NintsiChkhaidzeSum Zero (RMI20_sumzero)C++17
100 / 100
630 ms19232 KiB
#include <bits/stdc++.h> #define ll long long #define s second #define f first #define pb push_back #define pii pair <int,int> using namespace std; const int N = 4e5 + 3; int l[N],r[N],p[N],to[N],cur[N]; unordered_map <ll,int> mp; int main(){ ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL); int n; cin>>n; for(int i=1;i<=n;i++){ cin>>p[i]; } ll sum = 0; int t = 1e9; for (int i = n + 1; i >= 1; i--){ sum += p[i]; if (mp.find(sum) != mp.end()) { t = min(t,mp[sum]); } to[i] = t; mp[sum] = i; } int q; cin>>q; for (int i = 1; i <= q; i++){ cin >> l[i] >> r[i]; p[i] = 0; } for (int i = 18; i >= 0; i--){ for (int j = 1; j <= n+1; j++) cur[j] = to[j]; for (int j = 1; j <= i; j++) for (int k = 1; k <= n; k++) if (cur[k] <= n+1) cur[k] = cur[cur[k]]; for (int j = 1; j <= q; j++){ if (cur[l[j]] <= r[j] + 1){ l[j] = cur[l[j]]; p[j] += (1<<i); } } } for (int i=1;i<=q;i++) cout<<p[i]<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...