SRM476 Div2 Easy(300) MatrixShiftings

MatrixShiftings

#include <string>
#include <vector>

using namespace std;

class MatrixShiftings
{
public:
    int minimumShifts( vector <string> matrix, int value );
};

int MatrixShiftings::minimumShifts( vector <string> matrix, int value )
{
    int N = (int)matrix.size();
    int M = (int)matrix[0].size();

    int ans = N*M;

    for ( int y=0; y<N; y++ )
    for ( int x=0; x<M; x++ )
        if ( matrix[y][x]-'0' == value )
            ans = min( ans, min(y,N-y)+min(x,M-x) );

    return ans < N*M ? ans : -1;
}