#include<fstream>
#include<algorithm>
using namespace std;
const int N=45;
int f[N][N][N][N]={0},score[400],num[5]={0};
int main()
{
int n,m,i,x;
ifstream cin("tortoise.in");
ofstream cout("tortoise.out");
cin>>n>>m;
for (i=0;i<n;i++) cin>>score[i];
for (i=1;i<=m;i++)
{
cin>>x;
num[x]++;
}
f[0][0][0][0]=score[0];
for (int a=0;a<=num[1];a++)
for (int b=0;b<=num[2];b++)
for (int c=0;c<=num[3];c++)
for (int d=0;d<=num[4];d++)
{
i=a+b*2+c*3+d*4;
if (a>0) f[a][b][c][d]=max(f[a-1][b][c][d]+score[i],f[a][b][c][d]);
if (b>0) f[a][b][c][d]=max(f[a][b-1][c][d]+score[i],f[a][b][c][d]);
if (c>0) f[a][b][c][d]=max(f[a][b][c-1][d]+score[i],f[a][b][c][d]);
if (d>0) f[a][b][c][d]=max(f[a][b][c][d-1]+score[i],f[a][b][c][d]);
}
cout<<f[num[1]][num[2]][num[3]][num[4]]<<endl;;
return 0;
}
posted on 2012-06-20 11:22
龙在江湖 阅读(285)
评论(0) 编辑 收藏 引用 所属分类:
竞赛题解_NOIP