#include<bits/stdc++.h>
using namespace std;
int dp[41][41][41][41],n,m,x,a[351],b[5];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int j=1;j<=m;j++){
cin>>x;
b[x]++;
}
int a1=b[1],a2=b[2],a3=b[3],a4=b[4];
for(int i=0;i<=a1;i++)
for(int j=0;j<=a2;j++)
for(int k=0;k<=a3;k++)
for(int l=0;l<=a4;l++){
x=i+j*2+k*3+l*4+1;
if(i>=1&&j>=1&&k>=1&&l>=1){
dp[i][j][k][l]=a[x]+max(max(dp[i][j][k][l-1],dp[i][j][k-1][l]),max(dp[i][j-1][k][l],dp[i-1][j][k][l]));
//cout<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<dp[i][j][k][l]<<endl;
}
else{
dp[i][j][k][l]=a[x];
//cout<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<dp[i][j][k][l]<<endl;
}
}
cout<<dp[a1][a2][a3][a4];
}
送解决来了.
WA0分