85分求助
查看原帖
85分求助
1119291
Ggguvhu楼主2025/1/12 00:10
#include<iostream>
using namespace std;
const int M = 1005, N = 1005;
int a[N][M], sum[N][M];
void pre(int n,int m)
{
    sum[0][0] = a[0][0];
    for (int i = 0; i < n; i++) sum[i][0] = sum[i - 1][0] + a[i][0];
    for (int j = 0; j < m; j++) sum[0][j] = sum[0][j - 1] + a[0][j];
    for (int i = 1; i < n; i++)
        for (int j = 1; j < m; j++)
            sum[i][j] = a[i][j] + sum[i][j - 1] + sum[i - 1][j] - sum[i - 1][j - 1];
}

int  getsum(int x1, int y1, int x2, int y2)
{
    if (!x1 && !y1) return sum[0][0];
    if (!x1) return sum[x2][y2] - sum[x2][y1 - 1];
    if (!x2) return sum[x2][y2] - sum[x1 - 1][y2];
    return sum[x2][y2] - sum[x2][y1 - 1] - sum[x1 - 1][y2] + sum[x1 - 1][y1 - 1];
}

int main()
{
    int n, m, c;
    cin >> n >> m >> c;
    for (int i=0;i<n;i++)
        for (int j = 0; j < m; j++)
            cin >> a[i][j];
    pre(n,m);
    long long max = -0x7fffffff,xx=0,yy=0;
    for(int i=c-1;i<n;i++)
        for (int j = c - 1; j < m; j++)
        {
            long long k = getsum(i - c + 1, j - c + 1, i, j);
            if (max < k)
            {
                max = k;
                xx = i - c + 2;
                yy = j - c + 2;
            }
        }
    cout << xx << " " << yy;
    return 0;
}
2025/1/12 00:10
加载中...