Загрузка данных


#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>

int main() {
    int n, m;
    std::cin >> n >> m;

    std::vector<std::vector<long long>> a(
        n, std::vector<long long>(m)
    );

    std::vector<long long> row1(n, LLONG_MAX);
    std::vector<long long> row2(n, LLONG_MAX);
    std::vector<long long> col1(m, LLONG_MAX);
    std::vector<long long> col2(m, LLONG_MAX);

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            std::cin >> a[i][j];

            long long x = a[i][j];

            if (x < row1[i]) {
                row2[i] = row1[i];
                row1[i] = x;
            } else if (x < row2[i]) {
                row2[i] = x;
            }

            if (x < col1[j]) {
                col2[j] = col1[j];
                col1[j] = x;
            } else if (x < col2[j]) {
                col2[j] = x;
            }
        }
    }

    long long ans = LLONG_MAX;

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            long long x = a[i][j];

            long long r = row1[i];
            long long c = col1[j];

            if (r == x) r = row2[i];
            if (c == x) c = col2[j];

            ans = std::min(ans, x + r + c);
        }
    }

    std::cout << ans;
    return 0;
}