Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>int n,N,kk,q,x,y,u,v,ans;int arr[160000];int f[100010];int p[100010];void init(int k){int st = 400*k;int ed = 400*(k+1)<=n?400*(k+1):n+1;for(int i=ed-1;i>=st;i--){if(arr[i]+i>=ed){f[i] = 1;p[i] = arr[i]+i;}else{f[i] = f[arr[i]+i]+1;p[i] = p[arr[i]+i];}}}int main(int argc, char** argv) {scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&arr[i]);}kk = n/400+1;