样例AC,其他全部UKE
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<vector<int>> num{static_cast<unsigned long>(n), vector<int>{n, 0}};
int ans = INT32_MIN;
for (int i = 0; i < n; ++i) {
int row = 0;
for (int j = 0; j < n; ++j) {
cin >> num[i][j];
row += num[i][j];
}
ans = max(ans, row);
}
for (int j = 0; j < n; ++j) {
int column = 0;
for (int i = 0; i < n; ++i) {
column += num[i][j];
}
ans = max(ans, column);
}
for (int j = 0; j < n; ++j) {
int posUpItalic = 0;
int negUpItalic = 0;
for (int x = 0, y = j; x < n && y < n; ++x, ++y) {
posUpItalic += num[x][y];
}
for (int x = 0, y = j; x < n && y >= 0; ++x, --y) {
negUpItalic += num[x][y];
}
ans = max(ans, max(posUpItalic, negUpItalic));
}
for (int i = 0; i < n; ++i) {
int posDownItalic = 0;
int negDownItalic = 0;
for (int x = i, y = 0; x < n && y < n; ++x, ++y) {
posDownItalic += num[x][y];
}
for (int x = i, y = n - 1; x < n && y >= 0; ++x, --y) {
negDownItalic += num[x][y];
}
ans = max(ans, max(posDownItalic, negDownItalic));
}
cout << ans;
return 0;
}