Pagini recente » Cod sursa (job #347197) | Cod sursa (job #2749507) | Cod sursa (job #2460188) | Cod sursa (job #2828904) | Cod sursa (job #287802)
Cod sursa(job #287802)
# 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;
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;
// fout<<"am gasit "<<b[ii][jj]<<endl;
}
// fout<<"intru cu cheia "<<a[ii][jj]<<endl;
a[ii][jj]=0;
c[b[ii][jj]]=1;
ci[++dr]=ii;
cj[dr]=jj;
rez++;
}
else
{
d[++nd].i=i;
d[nd].j=j;
d[nd].c=a[ii][jj];
// fout<<"imi trebuie "<<a[ii][jj]<<endl;
}
}
}
++st;
}
//fout<<endl;
// for (i=1;i<=dr;i++)
// fout<<ci[i]<<" ";
// fout<<endl;
//for (i=1;i<=dr;i++)
// fout<<cj[i]<<" ";
// fout<<endl;
}
int main ()
{
citire ();
int i, j;
lee(is, js);
fout<<rez;
return 0;
}