#include <bits/stdc++.h>
using namespace std;
int n,m,ans,mk[400],cd[400],us[400],f[400];
int dfs(int now){
if(f[now]) return f[now];
int ma=mk[now];
for(int i=1;i<=m;i++){
if(us[i]) continue;
us[i]=1;
ma=max(ma,dfs(now+cd[i])+mk[now]);
us[i]=0;
}
return f[now]=ma;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>mk[i];
}
for(int i=1;i<=m;i++){
cin>>cd[i];
}
cout<<dfs(1)<<endl;
return 0;
}
怎么题解全是dp……一篇dfs都没有……