|
@@ -0,0 +1,48 @@
|
|
|
+#include<bits/stdc++.h>
|
|
|
+
|
|
|
+using namespace std;
|
|
|
+
|
|
|
+int maxSumLinear(const vector<int> &a) {
|
|
|
+ int n = a.size() - 1;
|
|
|
+ int sum = 0;
|
|
|
+ int b = 0;
|
|
|
+ for (int i = 0; i <= n; i++) {
|
|
|
+ if (b > 0)
|
|
|
+ b += a[i];
|
|
|
+ else
|
|
|
+ b = a[i];
|
|
|
+ if (b > sum) sum = b;
|
|
|
+ }
|
|
|
+ return sum;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+int maxSum2(const vector<vector<int>> &a) {
|
|
|
+ int sum = 0;
|
|
|
+ int m = a.size(), n = a[0].size();
|
|
|
+
|
|
|
+ vector<int> b(n, 0);
|
|
|
+ for (int i = 0; i < m; i++) {
|
|
|
+ for (int k = 0; k < n; k++) b[k] = 0;
|
|
|
+ for (int j = i; j < m; j++) {
|
|
|
+ for (int k = 0; k < n; k++) b[k] += a[j][k];
|
|
|
+ int max = maxSumLinear(b);
|
|
|
+ if (max > sum) sum = max;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return sum;
|
|
|
+}
|
|
|
+
|
|
|
+int main() {
|
|
|
+ for (int n; cin >> n;) {
|
|
|
+ vector<vector<int>> a(n, vector<int>(n, 0));
|
|
|
+ for (int i = 0; i < n; i++)
|
|
|
+ for (int j = 0; j < n; j++)
|
|
|
+ cin >> a[i][j];
|
|
|
+ cout << maxSum2(a) << endl;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|