矩阵取数游戏

题目描述

帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的$n×m$的矩阵,矩阵中的每个元素$a_{ij}$均为非负数。游戏规则如下:
1、每次取数时从每行各取走一个元素,共$n$个。$m$次后取完矩阵所有元素;
2、每次取走的各个元素只能是该元素所在行的行首或者行尾;
3、每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分=被取走的元素值$×2^i$,其中$i$表示第$i$次取数(从$1$开始编号);
4、游戏结束总得分为m次取数得分之和。
帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。

输入

包括$n+1$行:
第$1$行为两个用空格隔开的整数$n$和$m$;
第$2\sim n+1$行为$n×m$矩阵,其中每行有$m$个用单个空格隔开的非负整数。

输出

仅包含$1$行,为一个整数,即输入矩阵取数后的最大得分。

样例

输入:

2 3
1 2 3
3 4 2

输出:

82

说明

【输入输出样例1解释】
第1次:第1行取行首元素,第2行取行尾元素,本次得分为$1×2^1+2×2^1=6$
第2次:两行均取行首元素,本次得分为$2×2^2+3×2^2=20$
第3次:得分为$3×2^3+4×2^3=56$。总得分为$6+20+56=82$
【输入输出样例2】
输入:
1 4
4 5 0 5

输出:
122

【输入输出样例3】
输入:
2 10
96 56 54 46 86 12 23 88 80 43
16 95 18 29 30 53 88 83 64 67

输出:
316994

【限制】
60%的数据满足:$1\le n,m\le 30$,答案不超过$10^{16}$
100%的数据满足:$1\le n,m\le 80,0\le a_{ij}\le 1000$
查看思路与题解