样例1为什么没有过,回复互关%%%
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=1000010;
ll f[maxn];
ll f1[maxn],sum[maxn],f2[maxn];
int main(){
ll n,m;
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=m;i++) scanf("%lld",&f1[i]);
for(ll i=1;i<=n;i++) scanf("%lld",&f2[i]);
sort(f1+1,f1+m+1);
for(ll i=1+f1[1];i<=n+f1[m];i++) sum[i]=-1000100;
ll ans=0;
sum[1]=f2[1];
for(ll i=1+f1[1];i<=n+f1[m];i++){
for(ll j=1;j<=m;j++){
ll a=i-f1[j];
if(a>=1){
sum[i]=max(sum[i],sum[a]+f2[i]);
}
if(i>=n){
ans=max(sum[i],ans);
}
}
}
printf("%lld",ans);
}