1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e3 + 50; int n, m, c, ans_x, ans_y, pre[maxn][maxn]; ll ans = LLONG_MIN;
ll query(int x1, int y1, int x2, int y2) { return pre[x2][y2] - pre[x1 - 1][y2] - pre[x2][y1 - 1] + pre[x1 - 1][y1 - 1]; }
int main() { cin >> n >> m >> c; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> pre[i][j]; pre[i][j] += pre[i - 1][j] + pre[i][j - 1] - pre[i - 1][j - 1]; } } for (int i = 1; i <= n - c + 1; ++i) { ll sum = 0; int l = 1, r = 1; while (l <= r && r <= n) { if (r - l + 1 > c) sum -= query(i, l, i + c - 1, l), ++l; sum += query(i, r, i + c - 1, r); if (r >= c && sum > ans) ans = sum, ans_x = i, ans_y = l; ++r; } } cout << ans_x << " " << ans_y; return 0; }
|