Pagini recente » Cod sursa (job #723049) | Cod sursa (job #1392760) | Cod sursa (job #100738) | Cod sursa (job #2867914) | Cod sursa (job #74224)
Cod sursa(job #74224)
#include<fstream.h>
int a[100][100],N,M,L,b[2500],c[100][100],nr;
void citire(){
ifstream fin("castel.in");
fin>>N>>M>>L;
for (int i=0;i<N;i++)
for (int j=0;j<M;j++){
fin>>a[i][j];
c[i][j]=i*M+j+1;}
fin.close();
}
long long numarare(){
for (int u=0;u<N;u++)
for (int j=0;j<M;j++)
if (c[u][j]==L){
a[u][j]=-1;
b[L]=1;
break; }
nr=0;
short k=1;
while (k){
k=0;
for (int i=0;i<N;i++)
for (int j=0;j<M;j++)
if (a[i][j]==-1){
if (b[a[i][j+1]]==1&&a[i][j+1]!=-1){
b[c[i][j+1]]=1;
a[i][j+1]=-1;
k=1; }
if (b[a[i][j-1]]==1&&a[i][j-1]!=-1){
b[c[i][j-1]]=1;
a[i][j-1]=-1;
k=1;}
if (b[a[i+1][j]]==1&&a[i+1][j]!=-1){
b[c[i+1][j]]=1;
a[i+1][j]=-1;
k=1;}
if (b[a[i-1][j]]==1&&a[i-1][j]!=-1){
b[c[i-1][j]]=1;
a[i-1][j]=-1;
k=1;}
}
}
for (int t=0;t<N;t++)
for (int r=0;r<M;r++)
if (a[t][r]==-1)
nr++;
return nr;
}
int main(){
citire();
ofstream fout("castel.out");
fout<<numarare();
fout.close();
return 0;
}