Critical t get the question but easy to solve. Problem asks to find the maximum length of minimum distance.
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <cmath>
#include <cstring>
#include <fstream>
#include <string>
#include <algorithm>
#define INF 100000000
#define ll long long
using namespace std;
struct Cord{
int x,y;
};
int M;
char gr[1010][1010];
char s[1010][1010];
vector<Cord> Ones,Threes;
int main()
{
Cord tmp;
int MX,dist,MN;
while(scanf("%d",&M)!=EOF)
{
getchar();
Threes.clear();
Ones.clear();
for(int i=0;i<M;i++)
{
scanf("%s",s[i]);
for(int j=0;j<strlen(s[i]);j++)
{
if(s[i][j]=='1')
{
tmp.x = i;
tmp.y = j;
Ones.push_back(tmp);
}
if(s[i][j]=='3')
{
tmp.x = i;
tmp.y = j;
Threes.push_back(tmp);
}
}
}
MX = -1;
for(int i=0;i<Ones.size();i++)
{
MN = INF;
for(int j=0;j<Threes.size();j++)
{
dist = abs(Ones[i].x-Threes[j].x)+abs(Ones[i].y-Threes[j].y);
if(dist<MN)
MN =dist;
}
if(MX<MN)
MX = MN;
}
printf("%d\n",MX);
}
return 0;
}