比赛 |
防止浮躁的小练习v0.5 |
评测结果 |
AAAAAAAAAA |
题目名称 |
传纸条 |
最终得分 |
100 |
用户昵称 |
521 |
运行时间 |
0.144 s |
代码语言 |
C++ |
内存使用 |
13.05 MiB |
提交时间 |
2016-10-15 15:41:46 |
显示代码纯文本
#include<cstdio>
using namespace std;
#define is(a) ((a)>='0'&&(a)<='9')
char ch;bool read_flag;
inline void read(int& x)
{
read_flag=false;
while(ch=getchar(),!is(ch))if(ch=='-')read_flag=1;
x=ch^'0';
while(ch=getchar(),is(ch)) x=x*10+(ch^'0');
if(read_flag) x=-x;
}
const int Size=51;
inline int _max(int x,int y){return x>y?x:y;}
int f[Size][Size][Size][Size],map[Size][Size];
int _521()
{
freopen("message.in","r",stdin);
freopen("message.out","w",stdout);
int i,j,k,l,n,m;
read(n),read(m);
for(i=1;i<=n;i++) for(j=1;j<=m;j++) read(map[i][j]);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
for(k=1;k<=n;k++){
for(l=1;l<=m;l++){
int temp;
temp=_max(f[i-1][j][k-1][l],f[i-1][j][k][l-1]);
temp=_max(f[i][j-1][k-1][l],temp);
temp=_max(f[i][j-1][k][l-1],temp);
temp+=map[i][j]+map[k][l];
if(i==k&&j==l) temp-=map[i][j];
f[i][j][k][l]=temp;
}
}
}
}
printf("%d\n",f[n][m][n][m]);
return 0;
}
int _520=_521();
int main(){;}