0分全WA,不知哪错
#include<iostream>
using namespace std;
int n,m,a[350],c[4],dp[41][41][41][41],x,pos;
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<m;i++){
cin>>x;c[x]++;
}
dp[0][0][0][0]=a[0];
for(int i=0;i<=c[0];i++){
for(int j=0;j<=c[1];j++){
for(int k=0;k<=c[2];k++){
for(int p=0;p<=c[3];p++)
{
pos=i*1+j*2+k*3+p*4;
if(c[0]!=0)dp[i][j][k][p]=max(dp[i][j][k][p],dp[i-1][j][k][p]+a[pos]);
if(c[1]!=0)dp[i][j][k][p]=max(dp[i][j][k][p],dp[i][j-1][k][p]+a[pos]);
if(c[2]!=0)dp[i][j][k][p]=max(dp[i][j][k][p],dp[i][j][k-1][p]+a[pos]);
if(c[3]!=0)dp[i][j][k][p]=max(dp[i][j][k][p],dp[i][j][k][p-1]+a[pos]);
}
}
}
}
cout<<dp[c[0]][c[1]][c[2]][c[3]]<<endl;
}