313422026-08-23 12:07:55Firesloth28Könnyű túracpp17Elfogadva 100/1002ms756 KiB
#include <bits/stdc++.h>
using namespace std;

struct Point {
    int length;
    pair<int, int> start;
};

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    int n, m;
    cin >> n >> m;

    int map[100][100];
    Point dp[100][100];

    int maxLength = -1;
    pair<int, int> maxStart;
    pair<int, int> maxEnd;

    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            cin >> map[i][j];
            dp[i][j].length = 0;
            dp[i][j].start = make_pair(i, j);

            if (i > 0) {
                if (abs(map[i - 1][j] - map[i][j]) <= 1) {
                    dp[i][j].length = dp[i - 1][j].length + 1;
                    dp[i][j].start = dp[i - 1][j].start;
                }
            }
            if (j > 0) {
                if (abs(map[i][j - 1] - map[i][j]) <= 1 &&
                    dp[i][j - 1].length + 1 > dp[i][j].length) {
                    dp[i][j].length = dp[i][j - 1].length + 1;
                    dp[i][j].start = dp[i][j - 1].start;   
                }
            }

            if (dp[i][j].length > maxLength) {
                maxLength = dp[i][j].length;
                maxStart = dp[i][j].start;
                maxEnd = make_pair(i, j);
            }
        }
    }

    cout << maxLength << endl;
    cout << (maxStart.first + 1) << " " << (maxStart.second + 1) << endl;
    cout << (maxEnd.first + 1) << " " << (maxEnd.second + 1) << endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva2/21ms316 KiB
2Elfogadva2/21ms508 KiB
3Elfogadva6/61ms316 KiB
4Elfogadva6/61ms316 KiB
5Elfogadva6/61ms512 KiB
6Elfogadva7/71ms316 KiB
7Elfogadva7/71ms332 KiB
8Elfogadva7/71ms316 KiB
9Elfogadva7/71ms316 KiB
10Elfogadva7/71ms564 KiB
11Elfogadva7/72ms564 KiB
12Elfogadva9/92ms564 KiB
13Elfogadva9/92ms564 KiB
14Elfogadva9/92ms756 KiB
15Elfogadva9/92ms564 KiB