Pagini recente » Cod sursa (job #1773603) | Cod sursa (job #2869049) | Cod sursa (job #2216796) | Cod sursa (job #1276258) | Cod sursa (job #265944)
Cod sursa(job #265944)
#include<stdio.h>
int C[100],v[100],a[10][10],b[10][10];
FILE *f=fopen("castel.in","r");
FILE *g=fopen("castel.out","w");
int main()
{int i,j,M,N,K,p=1,q,ok,x,y,k,aux;
fscanf(f,"%d %d %d",&M,&N,&K);
for(i=1;i<=M;i++)
for(j=1;j<=N;j++) fscanf(f,"%d",&a[i][j]);
for(i=1;i<=M;i++)
for(j=1;j<=N;j++) {b[i][j]=p;
p++;}
p=0;
q=0;
ok=1;
for(i=1;i<=M && ok==1;i++)
for(j=1;j<=N && ok==1;j++)
if(b[i][j]==K) { C[++p]=b[i][j];
v[++q]=i;
v[++q]=j;
ok=0;
}
b[v[1]][v[2]]=-1;
for(i=1;i<=q;i=i+2)
for(j=1;j<=p;j++)
{x=v[i];
y=v[i+1];
if(a[x][y-1]==C[j] && b[x][y-1]!=-1)
{C[++p]=b[x][y-1];
v[++q]=x;
v[++q]=y-1;
b[x][y-1]=-1;}
if(a[x][y+1]==C[j] && b[x][y+1]!=-1)
{C[++p]=b[x][y+1];
v[++q]=x;
v[++q]=y+1;
b[x][y+1]=-1;}
if(a[x+1][y]==C[j] && b[x+1][y]!=-1)
{C[++p]=b[x+1][y];
v[++q]=x+1;
v[++q]=y;
b[x+1][y]=-1;}
if(a[x-1][y]==C[j] && b[x-1][y]!=-1)
{C[++p]=b[x-1][y];
v[++q]=x-1;
v[++q]=y;
b[x-1][y]=-1;}
if(a[x-1][y-1]==C[j] && b[x-1][y-1]!=-1)
{ok=1;
for(k=1;k<=p && ok==1;k++)
{
if(a[x][y-1]==C[k] && ok!=0) {ok=0;
C[++p]=b[x-1][y-1];
v[++q]=x-1;
v[++q]=y-1;
b[x-1][y-1]=-1;}
if(a[x][y+1]==C[k] && ok!=0) {ok=0;
C[++p]=b[x-1][y-1];
v[++q]=x-1;
v[++q]=y-1;
b[x-1][y-1]=-1;}
if(a[x+1][y]==C[k]) {ok=0;
C[++p]=b[x-1][y-1];
v[++q]=x-1;
v[++q]=y-1;
b[x-1][y-1]=-1;}
if(a[x-1][y]==C[k] && ok!=0) {ok=0;
C[++p]=b[x-1][y-1];
v[++q]=x-1;
v[++q]=y-1;
b[x-1][y-1]=-1;}
}
}
if(a[x-1][y+1]==C[j] && b[x-1][y+1]!=-1)
{ok=1;
for(k=1;k<=p && ok==1;k++)
{
if(a[x][y-1]==C[k] && ok!=0) {ok=0;
C[++p]=b[x-1][y+1];
v[++q]=x-1;
v[++q]=y+1;
b[x-1][y+1]=-1;}
if(a[x][y+1]==C[k] && ok!=0) {ok=0;
C[++p]=b[x-1][y+1];
v[++q]=x-1;
v[++q]=y+1;
b[x-1][y+1]=-1;}
if(a[x+1][y]==C[k] && ok!=0) {ok=0;
C[++p]=b[x-1][y+1];
v[++q]=x-1;
v[++q]=y+1;
b[x-1][y+1]=-1;}
if(a[x-1][y]==C[k] && ok!=0) {ok=0;
C[++p]=b[x-1][y+1];
v[++q]=x-1;
v[++q]=y+1;
b[x-1][y+1]=-1;}
}
}
if(a[x+1][y-1]==C[j] && b[x+1][y-1]!=-1)
{ok=1;
for(k=1;k<=p && ok==1;k++)
{
if(a[x][y-1]==C[k] && ok!=0) {ok=0;
C[++p]=b[x+1][y-1];
v[++q]=x+1;
v[++q]=y-1;
b[x+1][y-1]=-1;}
if(a[x][y+1]==C[k] && ok!=0) {ok=0;
C[++p]=b[x+1][y-1];
v[++q]=x+1;
v[++q]=y-1;
b[x+1][y-1]=-1;}
if(a[x+1][y]==C[k] && ok!=0) {ok=0;
C[++p]=b[x+1][y-1];
v[++q]=x+1;
v[++q]=y-1;
b[x+1][y-1]=-1;}
if(a[x-1][y]==C[k] && ok!=0) {ok=0;
C[++p]=b[x+1][y-1];
v[++q]=x+1;
v[++q]=y-1;
b[x+1][y-1]=-1;}
}
}
if(a[x+1][y+1]==C[j] && b[x+1][y+1]!=-1)
{ok=1;
for(k=1;k<=p && ok==1;k++)
{
if(a[x][y-1]==C[k] && ok!=0) {ok=0;
C[++p]=b[x+1][y+1];
v[++q]=x+1;
v[++q]=y+1;
b[x+1][y+1]=-1;}
if(a[x][y+1]==C[k] && ok!=0) {ok=0;
C[++p]=b[x+1][y+1];
v[++q]=x+1;
v[++q]=y+1;
b[x+1][y+1]=-1;}
if(a[x+1][y]==C[k] && ok!=0) {ok=0;
C[++p]=b[x+1][y+1];
v[++q]=x+1;
v[++q]=y+1;
b[x+1][y+1]=-1;}
if(a[x-1][y]==C[k] && ok!=0) {ok=0;
C[++p]=b[x+1][y+1];
v[++q]=x+1;
v[++q]=y+1;
b[x+1][y+1]=-1;}
}
}
}
k=0;
do{ok=1;
for(i=1;i<=p-1;i++)
if(C[i]>C[i+1])
{aux=C[i];
C[i]=C[i+1];
C[i+1]=aux;
ok=0;}
}
while(ok==0);
for(i=1;i<=p;i++) if(C[i]!=C[i+1]) k++;
fprintf(g,"%d",k);
fclose(f);
fclose(g);
return 0;
}