代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,x,a[1000001],b[1000001];
void dfs(int k,long long cnt){
if(k+x>=n){
if(a[k]<=a[n]){
b[x]=cnt+1;
printf("%lld\n",cnt+1);
return;
}
b[x]=cnt;
printf("%lld\n",cnt);
return;
}
long long maxi=0,maxxi=0;
bool flag=0;
for(int i=k+1;i<=k+x;i++){
if(a[i]>=a[maxi]){
maxi=i;
}
if(a[i]<a[k]){
flag=1;
}else{
continue;
}
if(a[i]>=a[maxxi]){
maxxi=i;
}
}
if(!flag){
dfs(maxi,cnt+1);
return;
}
dfs(maxxi,cnt);
return;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
b[i]=-1;
}
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d",&x);
if(b[x]!=-1){
printf("%d\n",b[x]);
continue;
}
dfs(1,0);
}
return 0;
}