Pagini recente » Cod sursa (job #368658) | Cod sursa (job #1464446) | Cod sursa (job #2905834) | Cod sursa (job #271273) | Cod sursa (job #302386)
Cod sursa(job #302386)
program kastely;
type tipus=record
i,j:1..150;
end;
var n,m,i,j,k,m1,m2,db:word;
a:array[1..150,1..150] of 0..22500;
b:array[1..22500] of tipus;
c:array[1..22500] of boolean;
f,g:text;
van:boolean;
x,y:array[1..4] of -1..1;
function sor(k:word):word;
begin
if k mod m=0 then sor:=k div m else
sor:=k div m+1;
end;
function osz(k:word):word;
begin
if k mod m=0 then osz:=m else osz:=k mod m;
end;
function szam(i,j:word):word;
begin
szam:=(i-1)*m+j;
end;
procedure tolt(m1:word);
var i:word;
begin
a[b[m1].i,b[m1].j]:=0;
for i:=1 to 4 do begin
if (b[m1].i+x[i]>=1) and (b[m1].i+x[i]<=n) and (b[m1].j+y[i]>=1) and (b[m1].j+y[i]<=m) then begin
if (c[a[b[m1].i+x[i],b[m1].j+y[i]]]) and (a[b[m1].i+x[i],b[m1].j+y[i]]<>0) then begin
inc(m2);
b[m2].i:=b[m1].i+x[i];
b[m2].j:=b[m1].j+y[i];
c[szam(b[m2].i,b[m2].j)]:=true;
van:=true;
inc(db);
end;
end;
end;
end;
begin
assign(f,'castel.in');reset(f);
assign(g,'castel.out');rewrite(g);
x[1]:=-1;y[1]:=0;
x[2]:=0;y[2]:=1;
x[3]:=1;y[3]:=0;
x[4]:=0;y[4]:=-1;
readln(f,n,m,k);
for i:=1 to n do begin
for j:=1 to m do
read(f,a[i,j]);
readln(f);
end;
c[k]:=true;
m1:=1;m2:=1;
db:=1;
b[1].i:=sor(k);
b[1].j:=osz(k); van:=true;
while van do begin
van:=false;
while m1<=m2 do begin
tolt(m1);
inc(m1);
end;
for i:=1 to m2 do
tolt(i);
end;
write(g,db);
close(f);
close(g);
end.