Cod:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("insule.in");
ofstream g("insule.out");
int dl[4]= {0,1,0,-1};
int dc[4]= {1,0,-1,0};
int v[250][250];
int x[4];
void Lee(int i,int j,int &mx,int n,int m)
{
for (int di=0; di<4; di++)
{
int iu=i,ju=j,o=0;
iu+=dl[di];
ju+=dc[di];
while (v[iu][ju]==0&&iu>-1&&ju>-1&&iu<n&&ju<m)
{
o++;
iu+=dl[di];
ju+=dc[di];
}
if (v[iu][ju]==2)
if (o<mx&&o!=0)
mx=o;
}
}
int main()
{
int n,m,a,mx=105;
f>>n>>m;
for (int i=0; i<n; i++)
{
f>>a;
int j=0;
while (a)
{
v[i][m-j-1]=a%10;
a/=10;
j++;
}
}
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
{
if (v[i][j])
if (v[i-1][j]!=v[i][j]&&v[i][j-1]!=v[i][j])
x[v[i][j]]++;
if (v[i][j]==1)
Lee(i,j,mx,n,m);
}
for (int i=1; i<4; i++)
g<<x[i]<<' ';
if (mx!=105)
g<<mx;
else
g<<0;
f.close();
g.close();
return 0;
}
