//#include //#include //#include // //using namespace std; // //int n, m; //vector> dp; // 记忆化数组 // //// 计算 2^power //long long powerOfTwo(int power) { // long long result = 1; // for (int i = 0; i < power; ++i) { // result *= 2; // } // return result; //} // //// 递归函数:选择向量的头或尾来查找最大值 //long long findMaxRecursive(const vector& b, int left, int right, int power) { // if (left > right) { // return 0; // } // if (left == right) { // return b[left] * powerOfTwo(power); // } // if (dp[left][right] != -1) { // 如果已经计算过,直接返回结果 // return dp[left][right]; // } // long long maxHead = findMaxRecursive(b, left + 1, right, power + 1) + b[left] * powerOfTwo(power); // long long maxTail = findMaxRecursive(b, left, right - 1, power + 1) + b[right] * powerOfTwo(power); // dp[left][right] = max(maxHead, maxTail); // 记录计算结果 // return dp[left][right]; //} // //long long solve(const vector>& matrix) { // long long totalMaxScore = 0; // for (const auto& row : matrix) { // int rowSize = row.size(); // // 动态调整 dp 的大小并初始化 // dp = vector>(rowSize, vector(rowSize, -1)); // totalMaxScore += findMaxRecursive(row, 0, rowSize - 1, 1); // } // return totalMaxScore; //} // //int main() { // cin >> n >> m; // vector> a(n, vector(m)); // // // 读取输入 // for (int i = 0; i < n; i++) { // for (int j = 0; j < m; j++) { // cin >> a[i][j]; // } // } // // cout << solve(a) << endl; // // return 0; //}