#include <bits/stdc++.h>
using namespace std;
#pragma G++ optimize(2)
const int N=1e6+10;
int a[N],b[N],dp[N];
int main()
{
memset(dp,128,sizeof(dp));
dp[0]=0;
int n,m,maxn=-3e9;
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
for(int i=1;i<=n+n;i++)
{
for(int j=1;j<=m;j++)
{
if(i>=a[j]) dp[i]=max(dp[i-a[j]],dp[i]);
}
dp[i]+=b[i];
}
for(int i=n;i<=n+n;i++) maxn=max(dp[i],maxn);
cout<<maxn;
return 0;
}
第3个测试点出错