比赛 |
防止颓废的小练习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;
}