const n=6; var a:array[0..n+1,0..n+1] of integer; ii,jj,i,j,iold:integer; function p(x:integer):boolean; {перевірка доступності клітинки} var k,kv,kz:integer; pr:boolean; begin pr:=true; kv:=0; for k:=1 to n do kv:=kv+a[1,k]; kz:=0; for k:=1 to n do kz:=kz+a[2,k]; if (kv>=(n div 2))and (x=1) then pr:=false; if (kz>=kv)and(x=2) then pr:=false; p:=pr; end; function poisk(x:integer):integer; {пошук місця з якого продовжити пошук при повернення на крок назад} var k:integer; begin for k:=1 to 2 do if a[k,x]=1 then poisk:=k; end; begin for i:=1 to 2 do for j:=1 to n do a[i,j]:=0; j:=1; iold:=0; while j>0 do begin {пошук клітинки, в яку можна розмістити фігуру} i:=iold+1; while not(p(i))and(i<=2) do i:=i+1; {якщо клітинка знайдена, то ставимо фігуру і йдем вперед і стаптуємо пошук з нуля } if (i<=2) and (j<=n) then begin a[i,j]:=1; j:=j+1; iold:=0; end ; {якщо виставлено фігури, тобто знайдено варіант то виводимо варіант} if (j>n) then begin for ii:=1 to 2 do begin for jj:=1 to n do write(a[ii,jj]); writeln; end; writeln; j:=j-1; iold:=poisk(j); a[iold,j]:=0; end; {якщо варіанту виставлення фігури на знайдено, то повертаємось назад} if (i>2) then begin j:=j-1; iold:=poisk(j); a[iold,j]:=0; end; end; end.