比赛 防止颓废的小练习v0.2 评测结果 AAAAAAAAAA
题目名称 乌龟棋 最终得分 100
用户昵称 ZWOI_ヤシニャ 运行时间 0.180 s
代码语言 C 内存使用 10.06 MiB
提交时间 2016-10-18 19:46:30
显示代码纯文本
#include<stdio.h>
#include<string.h>
#include<math.h>
int a[350],b[40][40][40][40],e[5],num;
int mem(int i,int j)
{
	if (i<j) i=j;
	return i;
}
int main()
{
	int n,m,i,j,k,l,d;
	freopen("tortoise.in","r",stdin);
	freopen("tortoise.out","w",stdout);
	scanf("%d %d\n",&n,&m);
	for (i=0;i<n;i++) scanf("%d",&a[i]);
	scanf("\n");
	for (i=1;i<=m;i++) 
	{
		scanf("%d",&j);
		e[j]++;
	}
	b[0][0][0][0]=a[0];
	for (l=0;l<=e[4];l++)
		for (k=0;k<=e[3];k++)
			for (j=0;j<=e[2];j++)
				for (i=0;i<=e[1];i++)
				{
					d=i+j*2+k*3+l*4;
					if(i) b[i][j][k][l]=mem(b[i][j][k][l],b[i-1][j][k][l]+a[d]);
					if(j) b[i][j][k][l]=mem(b[i][j][k][l],b[i][j-1][k][l]+a[d]);
					if(k) b[i][j][k][l]=mem(b[i][j][k][l],b[i][j][k-1][l]+a[d]);
					if(l) b[i][j][k][l]=mem(b[i][j][k][l],b[i][j][k][l-1]+a[d]);
				}
	printf("%d",b[e[1]][e[2]][e[3]][e[4]]);
	return 0;
}