제출 #850779

#제출 시각아이디문제언어결과실행 시간메모리
850779alexddSum Zero (RMI20_sumzero)C++17
61 / 100
292 ms26960 KiB
#include<bits/stdc++.h> using namespace std; int n; int anc[500005][7]; int v[500005]; map<long long,int> ult; int put7[7]; void calc_anc() { for(int p=1;p<7;p++) { for(int i=1;i<=n+2;i++) { anc[i][p]=anc[anc[anc[anc[anc[anc[anc[i][p-1]][p-1]][p-1]][p-1]][p-1]][p-1]][p-1]; } } } signed main() { ios_base::sync_with_stdio(0);cin.tie(0); put7[0]=1; for(int i=1;i<7;i++) put7[i]=put7[i-1]*7; long long tot=0; cin>>n; int a; for(int i=1;i<=n;i++) { cin>>v[i]; tot+=v[i]; } long long suff=0; anc[n+1][0]=n+2; anc[n+2][0]=n+2; for(int i=n;i>0;i--) { anc[i][0]=anc[i+1][0]; ult[tot-suff]=i; suff+=v[i]; if(ult[tot-suff]!=0) anc[i][0]=min(anc[i][0], ult[tot-suff]+1); } calc_anc(); int cntq,b; cin>>cntq; for(int i=0;i<cntq;i++) { cin>>a>>b; int rez=0; for(int p=6;p>=0;p--) { for(int j=0;j<6;j++) { if(anc[a][p]-1<=b) { rez+=put7[p]; a=anc[a][p]; } } } cout<<rez<<"\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...