别告诉我是机子炸了 因该是本蒟蒻太菜了
#include<iostream>
#define zz dp[i][j][k][l]
using namespace std;
const int N=400;
int n,m,sum[400],g[5];
int dp[N][N][N][N];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>sum[i];
for(int i=1;i<=m;i++){
int x;cin>>x;
g[x]++;
}
dp[0][0][0][0]=sum[1];
for(int i=0;i<=g[1];i++){
for(int j=0;j<=g[2];j++){
for(int k=0;k<=g[3];k++){
for(int l=0;l<=g[4];l++){
int xx=1+i+j*2+k*3+l*4;
int yy=dp[i-1][j][k][l]+sum[xx];
if(i)zz=max(zz,yy);
yy=dp[i][j-1][k][l]+sum[xx];
if(j)zz=max(zz,yy);
yy=dp[i][j][k-1][l]+sum[xx];
if(k)zz=max(zz,yy);
yy=dp[i][j][k][l-1]+sum[xx];
if(l)zz=max(zz,yy);
}
}
}
}
cout<<dp[g[1]][g[2]][g[3]][g[4]]<<endl;
return 0;
}