Pagini recente » Cod sursa (job #3174221) | Cod sursa (job #476117) | Cod sursa (job #220062) | Cod sursa (job #1090311) | Cod sursa (job #287807)
Cod sursa(job #287807)
# include <fstream>
using namespace std;
int a[153][153], b[153][153], n, m, k, c[23000], is, js, di[4]={0, 0, 1, -1}, dj[4]={-1, 1, 0, 0}, rez, nd, p[153][153];
ofstream fout ("castel.out");
struct tip{
int i, j, c;};
tip d[90000];
void citire ()
{
int i, j, c=0;
ifstream fin ("castel.in");
fin>>n>>m>>k;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
fin>>a[i][j];
k%m?is=k/m+1:is=k/m;
k%m?js=k%m:js=m;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
b[i][j]=++c;
}
void lee (int ist, int jst)
{
int i, j, ii, jj, k, ci[90000], cj[90000], st, dr, l;
st=dr=1;
ci[st]=ist, cj[st]=jst;
c[b[ist][jst]]=1;
a[ist][jst]=0;
rez++;;
while (st<=dr)
{
i=ci[st];
j=cj[st];
for (k=0;k<4;k++)
{
ii=i+di[k];
jj=j+dj[k];
if (a[ii][jj]!=0)
{
if (c[a[ii][jj]]==1)
{
for (l=1;l<=nd;l++)
if (d[l].c==b[ii][jj])
{
ci[++dr]=d[l].i;
cj[dr]=d[l].j;
d[l].c=0;
}
a[ii][jj]=0;
c[b[ii][jj]]=1;
ci[++dr]=ii;
cj[dr]=jj;
rez++;
}
else
{
if (p[ii][jj]==0)
{
d[++nd].i=i;
d[nd].j=j;
d[nd].c=a[ii][jj];
p[ii][jj]=1;
}
}
}
}
++st;
}
}
int main ()
{
citire ();
lee(is, js);
fout<<rez;
return 0;
}