{ Kov cs Zolt n, els‹ verzi¢ } const N=25; M=25; var a: array[1..N*3+1] of string[M*5+1]; { sor, oszlop } b,c,d: array[1..N,1..M] of boolean; f, g: text; i,j,n1,m1,s: word; procedure berak(q: integer); var szam: string; begin case q of -1: begin Delete(a[i*3-2],j*5-4,6); Insert('++++++',a[i*3-2],j*5-4); Delete(a[i*3-1],j*5-4,6); Insert('++++++',a[i*3-1],j*5-4); Delete(a[i*3-0],j*5-4,6); Insert('++++++',a[i*3-0],j*5-4); Delete(a[i*3+1],j*5-4,6); Insert('++++++',a[i*3+1],j*5-4); end; 0: begin Delete(a[i*3-2],j*5-4,6); Insert('++++++',a[i*3-2],j*5-4); Delete(a[i*3-1],j*5-4,6); Insert('+ +',a[i*3-1],j*5-4); Delete(a[i*3-0],j*5-4,6); Insert('+ +',a[i*3-0],j*5-4); Delete(a[i*3+1],j*5-4,6); Insert('++++++',a[i*3+1],j*5-4); end; 1: if not c[j,i] then begin Delete(a[i*3-2],j*5-4,6); Insert('++++++',a[i*3-2],j*5-4); Delete(a[i*3-1],j*5-4,6); str(s,szam); while length(szam)<3 do szam:='0'+szam; Insert('+'+szam+' +',a[i*3-1],j*5-4); Delete(a[i*3-0],j*5-4,6); Insert('+ +',a[i*3-0],j*5-4); Delete(a[i*3+1],j*5-4,6); Insert('++++++',a[i*3+1],j*5-4); inc(s); c[j,i]:=true; end; end; end; procedure SzelsoketKihuz; var z: array[1..N,1..N] of boolean; li: array[1..2,1..N*N] of record {list k} x,y: byte; end; lim: array[1..2] of word; {listamutat¢} lis: byte; {listasz m} procedure Listara(ls,x,y: byte); begin if (x>=1) and (x<=m1) and (y>=1) and (y<=n1) then begin inc(lim[ls]); li[ls,lim[ls]].x:=x; li[ls,lim[ls]].y:=y; end; end; begin lim[1]:=0; lim[2]:=0; lis:=1; for i:=1 to n1 do for j:=1 to m1 do begin z[j,i]:=false; d[j,i]:=false; if (i=1) or (i=n1) or (j=1) or (j=m1) then Listara(lis,j,i); end; while (lim[lis]>0) do begin for i:=1 to lim[lis] do if b[li[lis,i].x,li[lis,i].y] and not z[li[lis,i].x,li[lis,i].y] then begin Listara(3-lis,li[lis,i].x-1,li[lis,i].y); Listara(3-lis,li[lis,i].x+1,li[lis,i].y); Listara(3-lis,li[lis,i].x,li[lis,i].y-1); Listara(3-lis,li[lis,i].x,li[lis,i].y+1); z[li[lis,i].x,li[lis,i].y]:=true; d[li[lis,i].x,li[lis,i].y]:=true; end; lim[lis]:=0; lis:=3-lis; end; end; procedure beolvas; var k: word; x: byte; begin s:=1; for i:=1 to n1 do begin for j:=1 to m1 do begin read(f,x); b[j,i]:=(x=1); c[j,i]:=false; if x=0 then berak(0); end; for k:=i*4-3 to i*4 do a[k]:=Copy(a[k],1,m1*5+1); { sz‚less‚gre h£z s } end; SzelsoketKihuz; for i:=1 to n1 do for j:=1 to m1 do if b[j,i] and not d[j,i] then berak(-1); for i:=1 to n1 do for j:=1 to m1 do if not b[j,i] then begin if (j>1) then if (j1) then if (i