package ru.kuznec;

import org.springframework.stereotype.Service;
import java.util.stream.IntStream;

@Service
public class MatrixMinService {

    /**
     * Находит минимальный элемент матрицы, расположенный ниже главной диагонали.
     * @param matrix входная матрица
     * @return минимальное значение среди элементов ниже главной диагонали
     */
    public int findMinBelowMainDiagonal(int[][] matrix) {
        return IntStream.range(1, matrix.length)
                .parallel()
                .map(i -> {
                    int rowMin = Integer.MAX_VALUE;
                    for (int j = 0; j < i; j++) {
                        if (matrix[i][j] < rowMin) {
                            rowMin = matrix[i][j];
                        }
                    }
                    return rowMin;
                })
                .min()
                .orElse(Integer.MAX_VALUE);
    }
}