ID:49679
Title:Marco Tullio 139
Author:Fabio Carnevale
Date:2008-05-07 11:57:02
Score:13424.6646
Result:133893.00 (cyc: 17, node: 6544)
CPU Time:35.8456
Status:Passed
Comments:
Based on:none
Code:
function W = solv(B)
PShF=1562;
f8Ii = rand(43,1);
W=EdPD(B);
kDT3 = lPE1(B,W);
[Ry7u,WbAf] = size(B);
vwi7 = B(Ry7u:-1:1,:);
vwi7 = vwi7.';
[VBNf,dERH] = BdjM(vwi7,[1 2],[1 2],4*Ry7u*WbAf);
if kDT3 > dERH
W = [Ry7u-VBNf(:,2)+1 VBNf(:,1) Ry7u-VBNf(:,4)+1 VBNf(:,3)];
kDT3=dERH;
end
uJln=rand('state');
rand(PShF,1);
if kDT3>1000
[VBNf,dERH] = BdjM(vwi7,[1 2],[1 2],4*Ry7u*WbAf);
if kDT3 > dERH
W = [Ry7u-VBNf(:,2)+1 VBNf(:,1) Ry7u-VBNf(:,4)+1 VBNf(:,3)];
kDT3=dERH;
end
end
rand('state',uJln);
end
function [W,kDT3] = BdjM(szhU,KANa,dMHM,TXvQ)
[zFQ6,WYCZ]=size(szhU);
DUxB= -ones(zFQ6+2,WYCZ+2);
DUxB(2:end-1,2:end-1)=szhU;
LOEe = DUxB;
bbQx = 4;
if size(LOEe,2) > 20
QTLP = 4;
Qxak = 8;
Ks71 = 18;
else
QTLP = 3;
Qxak = 7;
Ks71 = 13;
end
kDT3 = inf;
fbMU = [1 2;2 1];
CNS4 = [1 3;3 1];
QDCZ = [3 2 1;1 2 3];
for cq5g = KANa
if cq5g == 2
[uPVz hHv8] = BBcO(LOEe,QTLP,fbMU(cq5g,:));
[yAUb T15I] = Tnn0(hHv8,uPVz,Qxak,CNS4(cq5g,:));
[VGSy Tw_F] = Tnn0(T15I,yAUb,Ks71,CNS4(cq5g,:));
else
[uPVz hHv8] = BBcO(LOEe,4,fbMU(cq5g,:));
[VGSy Tw_F] = Tnn0(hHv8,uPVz,11,CNS4(cq5g,:));
end
for RCWw = dMHM
V8ZD = cxLA(LOEe,Tw_F,VGSy,bbQx,Ks71,QDCZ(RCWw,:))-1;
oN11 = lPE1(szhU,V8ZD);
if oN11 <= kDT3
kDT3 = oN11;
W = V8ZD;
bbQx = bbQx - 1;
end
end
end
end
function a_hU = lPE1(B,W)
zFQ6=size(B,1);
B(W(:,1)+(W(:,2)-1)*zFQ6)=0;
B(W(:,3)+(W(:,4)-1)*zFQ6)=0;
a_hU=sum(B(:))+size(W,1)+sum(W(:,1)==W(:,3)&W(:,2)==W(:,4))*24;
end
function [Nh_K M_Ok] = FMI2(B,McbD)
LAnr = sort(B(B>0),'descend');
W4qT = size(LAnr,1);
if W4qT < 1
Nh_K = [];
M_Ok = 0;
return
end
lRNU=LAnr(diff([0;LAnr])~=0);
Nh_K = zeros(nnz(lRNU),3);
YGG3=histc(LAnr,lRNU(end:-1:1));
Nh_K(:,1)=lRNU;
Nh_K(:,2)=YGG3(end:-1:1);
M_Ok=nnz(lRNU);
if McbD < 3, return, end
for G1xR = 1:M_Ok
if Nh_K(G1xR,2) >= 2
IBj0 = Nh_K(G1xR,1);
[PpGv aHm1] = find(B == IBj0);
g3tC = 0;
GRaz = size(PpGv,1);
g3tC=sum(abs(diff(PpGv))+abs(diff(aHm1)));
Nh_K(G1xR,3) = Nh_K(G1xR,2)*IBj0 - 0.85 * g3tC;
end
end
end
function [W B] = BBcO(B,Ks71,McbD)
W = [];
[Nh_K M_Ok] = FMI2(B,McbD);
if M_Ok < 1
return
end
Nh_K=sortrows(Nh_K,-McbD);
for G1xR = 1:M_Ok
if Nh_K(G1xR,2) >= 2
IBj0 = Nh_K(G1xR,1);
[PpGv aHm1] = find(B == IBj0);
GRaz = size(PpGv,1);
ORnM = GRaz*(GRaz-1)/2;
dist = zeros(ORnM,3);
[okPk QCb9]=find(tril(ones(GRaz),-1));
dist(:,1)=QCb9;
dist(:,2)=okPk;
dist(:,3)=abs(aHm1(okPk)-aHm1(QCb9))+abs(PpGv(okPk)-PpGv(QCb9));
[g3tC fUZ9] = sort(dist(:,3));
dist = dist(fUZ9,:);
W4qT = 0;
for cq5g = 1:ORnM
if dist(cq5g,3) > Ks71+1
break
end
XqJT = dist(cq5g,1);
nquD = dist(cq5g,2);
path = O9tx(B,[PpGv(XqJT); PpGv(nquD)], [aHm1(XqJT); aHm1(nquD)], -IBj0, Ks71, 2*IBj0);
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
W4qT = 2;
edit = [1:(XqJT-1) (XqJT+1):(nquD-1) (nquD+1):GRaz];
PpGv = [PpGv(XqJT); PpGv(nquD); PpGv(edit)];
aHm1 = [aHm1(XqJT); aHm1(nquD); aHm1(edit)];
break
else
end
end
if W4qT < 2
continue
end
for uYiE = 3:GRaz
[bn6R W3To] = find(B == -IBj0);
ZmwJ = size(bn6R,1);
ORnM =  ZmwJ * (GRaz - W4qT);
DGXj = (1:ZmwJ*GRaz)';
nquD=mod(DGXj-1,GRaz)+1;
XqJT=ceil(DGXj/GRaz);
WIU8 = (nquD>W4qT);
XqJT = XqJT(WIU8);
nquD = nquD(WIU8);
g3tC = abs(bn6R(XqJT)-PpGv(nquD)) + abs(W3To(XqJT)-aHm1(nquD));
dist = [XqJT,nquD,g3tC];
[g3tC fUZ9] = sort(dist(:,3));
dist = dist(fUZ9,:);
IDYF = false(GRaz,1);
iq60 = false;
for cq5g = 1:ORnM
if dist(cq5g,3) > Ks71+1
break
end
nquD = dist(cq5g,2);
if IDYF(nquD)
randperm(4);
continue
end
XqJT = dist(cq5g,1);
path = O9tx(B,[bn6R(XqJT); PpGv(nquD)], [W3To(XqJT); aHm1(nquD)], -IBj0, Ks71, IBj0);
IDYF(nquD)=true;
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
W4qT = W4qT + 1;
iq60 = true;
PpGv([uYiE nquD]) = PpGv([nquD uYiE]);
aHm1([uYiE nquD]) = aHm1([nquD uYiE]);
break
end
end
if ~iq60
break
end
end
end
end
end
function [W B] = Tnn0(B,W,bY9b,McbD)
[Nh_K M_Ok] = FMI2(B,McbD);
if M_Ok < 1, return, end
Nh_K=sortrows(Nh_K,-McbD);
for G1xR = 1:M_Ok
IBj0 = Nh_K(G1xR,1);
ZmwJ = sum(B == -IBj0);
if ZmwJ == 0
if Nh_K(G1xR,2) >= 2
[PpGv aHm1] = find(B == IBj0);
GRaz = size(PpGv,1);
ORnM = GRaz*(GRaz-1)*.5;
DGXj = (1:GRaz*GRaz)';
nquD=mod(DGXj-1,GRaz)+1;
XqJT=ceil(DGXj/GRaz);
WIU8 = (XqJT<nquD);
XqJT = XqJT(WIU8);
nquD = nquD(WIU8);
g3tC = abs(PpGv(XqJT)-PpGv(nquD)) + abs(aHm1(XqJT)-aHm1(nquD));
dist = [XqJT,nquD,g3tC];
[g3tC fUZ9] = sort(dist(:,3));
dist = dist(fUZ9,:);
maxstep = min(bY9b,2*IBj0+1);
iq60 = false;
for cq5g = 1:ORnM
if dist(cq5g,3) > maxstep+1
break
end
XqJT = dist(cq5g,1);
nquD = dist(cq5g,2);
path = O9tx(B,[PpGv(XqJT); PpGv(nquD)], [aHm1(XqJT); aHm1(nquD)], -IBj0, bY9b, 2*IBj0);
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
iq60 = true;
break
end
end
if ~iq60
continue
end
end
end
[PpGv aHm1] = find(B == IBj0);
G3F4 = size(PpGv,1);
maxstep = min(bY9b,IBj0+1);
for uYiE = 1:G3F4
[bn6R W3To] = find(B == -IBj0);
ZmwJ = size(bn6R,1);
ORnM =  ZmwJ * (G3F4-uYiE+1);
dist = zeros(ORnM,3);
cq5g = 0;
for XqJT = 1:ZmwJ
for nquD = uYiE:G3F4
cq5g = cq5g + 1;
dist(cq5g,1) = XqJT;
dist(cq5g,2) = nquD;
dist(cq5g,3) = abs(bn6R(XqJT)-PpGv(nquD)) + abs(W3To(XqJT)-aHm1(nquD));
end
end
[g3tC fUZ9] = sort(dist(:,3));
dist = dist(fUZ9,:);
IDYF = false(G3F4,1);
iq60 = false;
for cq5g = 1:ORnM
if dist(cq5g,3) > maxstep+1
break
end
nquD = dist(cq5g,2);
if IDYF(nquD)
randperm(4);
continue
end
XqJT = dist(cq5g,1);
path = O9tx(B,[bn6R(XqJT); PpGv(nquD)], [W3To(XqJT); aHm1(nquD)], -IBj0, bY9b, 2*IBj0);
IDYF(nquD)=true;
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
iq60 = true;
PpGv([uYiE nquD]) = PpGv([nquD uYiE]);
aHm1([uYiE nquD]) = aHm1([nquD uYiE]);
break
end
end
if ~iq60
break
end
end
end
end
function [C0EY qYQG] = c3TT(DUxB,B,path)
[Bc8q C5T_] = size(B);
C0EY = DUxB == 0;
qYQG = C0EY;
C0EY(:,[1 C5T_]) = false;
qYQG([1 Bc8q],:) = false;
for G1xR = 1:size(path,1)
if path(G1xR,1) == path(G1xR,3)
C0EY(path(G1xR,1),path(G1xR,2)) = false;
C0EY(path(G1xR,3),path(G1xR,4)) = false;
end
if path(G1xR,2) == path(G1xR,4)
qYQG(path(G1xR,1),path(G1xR,2)) = false;
qYQG(path(G1xR,3),path(G1xR,4)) = false;
end
end
end
function B = TiiY(B,path,iwBe)
B(path(1,1),path(1,2)) = iwBe;
for G1xR = 1:size(path,1);
B(path(G1xR,3),path(G1xR,4)) = iwBe;
end
end
function path = Svwd(jGMD,AZNG,Bc8q,jXFo)
path = zeros(jXFo,4);
hVOU = mod(jGMD,Bc8q);
SWq4 = ceil(jGMD/Bc8q);
for uYiE = 1:jXFo
path(uYiE,1:2) = [hVOU SWq4];
jGMD = AZNG(jGMD);
hVOU = mod(jGMD,Bc8q);
SWq4 = ceil(jGMD/Bc8q);
path(uYiE,3:4) = [hVOU SWq4];
end
end
function path = O9tx(B,PpGv,aHm1,iwBe,Ks71,xhiv)
[Bc8q C5T_] = size(B);
AZNG = zeros(Bc8q,C5T_);
BcVP = -ones(Bc8q,C5T_);
BcVP(PpGv(2),aHm1(2)) = 0;
BcVP(PpGv(1),aHm1(1)) = -2;
BcVP( B == iwBe ) = -2;
FQMc = zeros(Bc8q*C5T_,1);
FQMc(1) = PpGv(2) + (aHm1(2)-1)*Bc8q;
count = 1;
nD77 = [-1 1 -Bc8q Bc8q];
S_Rr = randperm(4);
for step = 0:min(Ks71,xhiv)
if count < 1, break, end
GRaz = count;
jGMD = FQMc;
count = 0;
for G1xR = 1:GRaz
Blu2 = jGMD(G1xR);
for BC3q=1:4
vuBz = Blu2 + nD77(S_Rr(BC3q));
cHwV = BcVP(vuBz);
if cHwV == -2
AZNG(vuBz) = Blu2;
path = Svwd(vuBz,AZNG,Bc8q,step+1);
return
end
if cHwV == -1 && B(vuBz) == 0
BcVP(vuBz) = step+1;
AZNG(vuBz) = Blu2;
count = count + 1;
FQMc(count) = vuBz;
end
end
end
end
path = [];
end
function path = LlL4(B,C0EY,qYQG,PpGv,aHm1,iwBe,bbQx,bY9b,xhiv)
[Bc8q C5T_] = size(B);
Nbqj = false(Bc8q,C5T_);
AZNG = zeros(Bc8q,C5T_);
BcVP = -ones(Bc8q,C5T_);
BcVP(PpGv(1),aHm1(1)) = -2;
BcVP( B == iwBe ) = -2;
maxstep = min((bbQx*27)+bY9b,xhiv+1);
jNs1 = zeros(maxstep+28,1);
jNs1(1) = PpGv(2) + (aHm1(2)-1)*Bc8q;
nD77 = [-Bc8q Bc8q -1 1];
for step = 1:maxstep
while jNs1(step)>0
Blu2 = jNs1(step);
jNs1(step)=BcVP(Blu2);
for BC3q = 1:4
vuBz = Blu2 + nD77(BC3q);
cHwV = BcVP(vuBz);
if cHwV==-1
if B(vuBz) == 0
BcVP(vuBz) = jNs1(step+1);
jNs1(step+1) = vuBz;
AZNG(vuBz) = Blu2;
elseif (C0EY(vuBz)&&(BC3q<3)) || (qYQG(vuBz)&&(BC3q>2))
BcVP(vuBz) = jNs1(step+26);
jNs1(step+26) = vuBz;
AZNG(vuBz) = Blu2;
Nbqj(vuBz) = true;
end
end
if cHwV==-2
step=step+1;
AZNG(vuBz) = Blu2;
hVOU=mod(vuBz,Bc8q);
SWq4=ceil(vuBz/Bc8q);
path = zeros(step,4);
uYiE = 0;
while hVOU ~= PpGv(2) || SWq4 ~= aHm1(2)
uYiE = uYiE + 1;
path(uYiE,1:2) = [hVOU SWq4];
vuBz = hVOU + (SWq4-1)*Bc8q;
FlDz = AZNG(vuBz);
Lrwx=mod(FlDz,Bc8q);
gNRJ=ceil(FlDz/Bc8q);
path(uYiE,3:4) = [Lrwx gNRJ];
hVOU = Lrwx;
SWq4 = gNRJ;
if Nbqj(hVOU,SWq4)
uYiE = uYiE + 1;
path(uYiE,:) = [hVOU SWq4 hVOU SWq4];
end
end
path = path(1:uYiE,:);
return
end
end
end
end
path = [];
end
function W = EdPD(B)
[W,kDT3] = nBH8(B);
AZkC = 0;
N9HN = round(mod(B(:),2));
if kDT3 < 2100
return
end
[GhJs,Jvtd] = size(B);
B = flipud(fliplr(B'));
[K0zU,wDsZ] = nBH8(B);
if kDT3 > wDsZ
W = [GhJs-K0zU(:,2)+1 Jvtd-K0zU(:,1)+1 GhJs-K0zU(:,4)+1 Jvtd-K0zU(:,3)+1];
end
if N9HN~=AZkC;        W = zeros(0,4);    end
end
function [W,kDT3] = nBH8(B)
[zFQ6,WYCZ]=size(B);
WQFH=nan(zFQ6+2,WYCZ+2);
WQFH(2:end-1,2:end-1)=B;
LOEe = WQFH;
bbQx = 4;
if size(LOEe,2) > 20
QTLP = 4;
Qxak = 8;
Ks71 = 12;
else
QTLP = 3;
Qxak = 7;
Ks71 = 11;
end
kDT3 = inf;
fbMU = [1 2;2 1];
CNS4 = [1 3;3 1];
QDCZ = [3 2 1;1 2 3];
for cq5g = 1:2
if cq5g == 2
[uPVz hHv8] = Rlek(LOEe,QTLP,fbMU(cq5g,:));
[yAUb T15I] = IGwc(hHv8,uPVz,Qxak,CNS4(cq5g,:));
[VGSy Tw_F] = IGwc(T15I,yAUb,Ks71,CNS4(cq5g,:));
else
[uPVz hHv8] = Rlek(LOEe,4,fbMU(cq5g,:));
[VGSy Tw_F] = IGwc(hHv8,uPVz,11,CNS4(cq5g,:));
end
for RCWw = 1:2
if cq5g == 2 && RCWw == 2 && kDT3 > 2100, return, end
V8ZD = cxLA(LOEe,Tw_F,VGSy,bbQx,Ks71,QDCZ(RCWw,:))-1;
oN11 = lPE1(B,V8ZD);
if oN11 <= kDT3
kDT3 = oN11;
W = V8ZD;
bbQx = bbQx - 1;
end
end
end
if zFQ6*WYCZ > 290; return; end
XnVi = sum(W(:,1)==W(:,3)&W(:,2)==W(:,4));
if XnVi <= 4
RTgB = JT3p(B);
B0vb = lPE1(B,RTgB);
if B0vb < kDT3
W = RTgB;
kDT3 = B0vb;
end
end
end
function path = pO_1(B,PpGv,aHm1,iwBe,Ks71,xhiv)
function path = TwV6(PeSE,Ulrf,c7oz)
WQYV(PeSE,Ulrf) = iMEc(G1xR);
L_vg(PeSE,Ulrf) = umDu(G1xR);
path = zeros(c7oz,4);
for LazW = 1:c7oz
path(LazW,1:2) = [PeSE Ulrf];
KHKc = WQYV(PeSE,Ulrf);
VTU6 = L_vg(PeSE,Ulrf);
path(LazW,3:4) = [KHKc VTU6];
PeSE = KHKc;
Ulrf = VTU6;
end
end
[Bc8q C5T_] = size(B);
WQYV = zeros(Bc8q,C5T_);
L_vg = zeros(Bc8q,C5T_);
BcVP = -ones(Bc8q,C5T_);
BcVP(PpGv(2),aHm1(2)) = 0;
BcVP(PpGv(1),aHm1(1)) = -2;
BcVP( B == iwBe ) = -2;
Di2c = zeros(Bc8q*C5T_,1);
dhIz = zeros(Bc8q*C5T_,1);
count = 1;
Di2c(1) = PpGv(2);
dhIz(1) = aHm1(2);
EoPt=[-1 1 0 0];
dSpY=[0 0 -1 1];
for step = 0:min(Ks71,xhiv)
if count < 1, break, end
GRaz = count;
iMEc = Di2c(1:GRaz);
umDu = dhIz(1:GRaz);
count = 0;
for G1xR = 1:GRaz
ZLok = umDu(G1xR);
Blu2 = iMEc(G1xR);
for BC3q=1:4
PeSE = Blu2 + EoPt(BC3q);
Ulrf = ZLok + dSpY(BC3q);
vuBz = PeSE + (Ulrf-1)*Bc8q;
cHwV = BcVP(vuBz);
if cHwV == -2
path = TwV6(PeSE,Ulrf,step+1);
return
elseif cHwV == -1 && B(vuBz) == 0
BcVP(vuBz) = step+1;
WQYV(vuBz) = Blu2;
L_vg(vuBz) = ZLok;
count = count + 1; Di2c(count) = PeSE; dhIz(count) = Ulrf;
end
end
end
end
path = [];
end
function YJ_W = JT3p(nquD)
IBj0 = unique(nquD);
IBj0(1) = [];
T80x = zeros(size(IBj0));
for G1xR = 1:length(T80x)
T80x(G1xR) = nnz(IBj0(G1xR) == nquD(:));
end
for G1xR = 1:length(T80x)
if T80x(G1xR) == 1
nquD(IBj0(G1xR) == nquD(:)) = -1;
end
end
nYic = zeros(size(nquD)+2);
jHwu = repmat(-1,size(nYic));
jHwu(2:end-1,2:end-1) = nquD;
YJ_W = [];
[sf1p, YTiw] = find(jHwu>0);
g3tC = (size(jHwu,1)/2 - sf1p).^2 + (size(jHwu,2)/2 - YTiw).^2;
[g3tC, order] = sort(g3tC);
order = order';
for M_Ok = 1:length(sf1p)-1
m9vf = 0;
T2Lw = 32;
for G1xR = order
if nYic(sf1p(G1xR), YTiw(G1xR))
continue
end
[a_hU, LWzD, uIbD] = uMOs(jHwu, nYic, sf1p(G1xR), YTiw(G1xR), T2Lw);
if a_hU > m9vf
m9vf = a_hU;
Uzic = LWzD;
T2Lw = uIbD;
if T2Lw == 1
break
end
end
end
if m9vf == 0
YJ_W = YJ_W - 1;
return
end
nYic = TiiY(nYic, Uzic, jHwu(Uzic(1,1), Uzic(1,2)));
jHwu = TiiY(jHwu, Uzic, jHwu(Uzic(1,1), Uzic(1,2)));
YJ_W = [YJ_W; Uzic];
end
YJ_W = YJ_W - 1;
end
function [m9vf, Uzic, T2Lw] = uMOs(nquD, nYic, jGMD, umDu, vMSV)
m9vf = 0;
Uzic = [];
LazW = [1 -1 0 0];
M_Ok = [0 0 1 -1];
if ~any(nYic(:)==nquD(jGMD,umDu))
nYic = nquD;
end
jHwu = nquD;
jHwu(jHwu>0) = -1;
jHwu(jGMD,umDu) = 1;
T2Lw = Inf;
IBj0 = nquD(jGMD,umDu);
for G1xR = 1:vMSV-2
[sf1p, YTiw] = find(jHwu==G1xR);
for T80x = 1:length(sf1p)
for M8zm = 1:4
tBrt = sf1p(T80x) + LazW(M8zm);
NoZC = YTiw(T80x) + M_Ok(M8zm);
if nYic(tBrt,NoZC) == IBj0 && ~(tBrt == jGMD && NoZC == umDu)
T2Lw = G1xR;
break
end
v7DM = jHwu(tBrt,NoZC);
if v7DM == 0
jHwu(tBrt,NoZC) = G1xR+1;
end
end
if T2Lw < Inf
break
end
end
if T2Lw < Inf
break
end
end
if T2Lw == Inf
return
end
m9vf = nquD(jGMD,umDu) - T2Lw;
if T2Lw == 1
Uzic = [jGMD, umDu, tBrt, NoZC];
return
end
Uzic = zeros(T2Lw,4);
for step = T2Lw:-1:1
for M8zm = 1:4
Ec9p = tBrt + LazW(M8zm);
wkwq = NoZC + M_Ok(M8zm);
if jHwu(Ec9p, wkwq) == step
break
end
end
Uzic(step,:) = [Ec9p, wkwq, tBrt, NoZC];
tBrt = Ec9p;
NoZC = wkwq;
end
end
function [W B] = Rlek(B,Ks71,McbD)
W = [];
[Nh_K M_Ok] = FMI2(B,McbD);
if M_Ok < 1
return
end
Nh_K=sortrows(Nh_K,-McbD);
for G1xR = 1:M_Ok
if Nh_K(G1xR,2) >= 2
IBj0 = Nh_K(G1xR,1);
[PpGv aHm1] = find(B == IBj0);
GRaz = size(PpGv,1);
ORnM = GRaz*(GRaz-1)/2;
dist = zeros(ORnM,3);
cq5g = 0;
for XqJT = 1:GRaz
for nquD = (XqJT+1):GRaz
cq5g = cq5g + 1;
dist(cq5g,1) = XqJT;
dist(cq5g,2) = nquD;
dist(cq5g,3) = abs(PpGv(XqJT)-PpGv(nquD)) + abs(aHm1(XqJT)-aHm1(nquD));
end
end
[g3tC fUZ9] = sort(dist(:,3));
dist = dist(fUZ9,:);
kwnO = reshape(dist(:,1:2)',[],1);
W4qT = 0;
LII9 = 1;
DaY5 = false(GRaz,1);
for G1xR=1:GRaz
jh2z = find( ~DaY5(kwnO(LII9:end)) , 1 , 'first');
if isempty(jh2z)
break
end
XqJT = kwnO(jh2z);
Distance = abs(PpGv([1:XqJT-1,XqJT+1:end]')-PpGv(XqJT)) + abs(aHm1([1:XqJT-1,XqJT+1:end]')-aHm1(XqJT));
if max(Distance)>Ks71-1
break
end
path = F0uZ(B,PpGv(XqJT),aHm1(XqJT),PpGv([1:XqJT-1,XqJT+1:end]'),aHm1([1:XqJT-1,XqJT+1:end]'), -IBj0, Ks71, 2*IBj0);
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
W4qT = 2;
break
end
end
if W4qT < 2
continue
end
for LazW = 3:GRaz
[bn6R W3To] = find(B == -IBj0);
[PpGv aHm1] = find(B == IBj0);
[SWtQ,GPpb] = meshgrid(PpGv,bn6R);
[yAfI,y26l] = meshgrid(PpGv,bn6R);
Distance = abs(SWtQ-GPpb) + abs(yAfI-y26l);
if max(Distance(:))>Ks71-1
break
end
path = F0uZ(B,bn6R,W3To,PpGv,aHm1, -IBj0, Ks71, 2*IBj0);
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
iq60 = true;
else
break
end
end
end
end
end
function [W B] = IGwc(B,W,ov0g,McbD)
[Nh_K M_Ok] = FMI2(B,McbD);
if M_Ok < 1, return, end
Nh_K=sortrows(Nh_K,-McbD);
for G1xR = 1:M_Ok
IBj0 = Nh_K(G1xR,1);
ZmwJ = sum(B == -IBj0);
if ZmwJ == 0
if Nh_K(G1xR,2) >= 2
[PpGv aHm1] = find(B == IBj0);
GRaz = size(PpGv,1);
ORnM = GRaz*(GRaz-1)/2;
dist = zeros(ORnM,3);
cq5g = 0;
for XqJT = 1:GRaz
for nquD = (XqJT+1):GRaz
cq5g = cq5g + 1;
dist(cq5g,1) = XqJT;
dist(cq5g,2) = nquD;
dist(cq5g,3) = abs(PpGv(XqJT)-PpGv(nquD)) + abs(aHm1(XqJT)-aHm1(nquD));
end
end
[g3tC fUZ9] = sort(dist(:,3));
dist = dist(fUZ9,:);
maxstep = min(ov0g,2*IBj0+1);
iq60 = false;
for cq5g = 1:ORnM
if dist(cq5g,3) > maxstep+1
break
end
XqJT = dist(cq5g,1);
nquD = dist(cq5g,2);
path = pO_1(B,[PpGv(XqJT); PpGv(nquD)], [aHm1(XqJT); aHm1(nquD)], -IBj0, ov0g, 2*IBj0);
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
iq60 = true;
break
end
end
if ~iq60
continue
end
end
end
[PpGv aHm1] = find(B == IBj0);
LLdQ = size(PpGv,1);
maxstep = min(ov0g,IBj0+1);
for LazW = 1:LLdQ
[bn6R W3To] = find(B == -IBj0);
[PpGv aHm1] = find(B == IBj0);
iq60 = false;
path = F0uZ(B,bn6R,W3To,PpGv,aHm1, -IBj0, ov0g, IBj0);
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
iq60 = true;
end
if ~iq60
break
end
end
end
end
function [W B] = cxLA(WQFH,B,W,bbQx,ov0g,McbD)
function YEGI()
for YJ_W = 1:size(path,1);
if path(YJ_W,1) == path(YJ_W,3)
Fog9(path(YJ_W,1),path(YJ_W,2)) = false;
Fog9(path(YJ_W,3),path(YJ_W,4)) = false;
if path(YJ_W,2) == path(YJ_W,4)
B(path(YJ_W,1),path(YJ_W,2)) = -9999;
end
end
if path(YJ_W,2) == path(YJ_W,4)
om_Q(path(YJ_W,1),path(YJ_W,2)) = false;
om_Q(path(YJ_W,3),path(YJ_W,4)) = false;
end
end
end
[Fog9 om_Q] = c3TT(WQFH,B,W);
[Nh_K M_Ok] = FMI2(B,McbD);
if M_Ok < 1, return, end
Nh_K=sortrows(Nh_K,-McbD);
for G1xR = 1:M_Ok
IBj0 = Nh_K(G1xR,1);
ZmwJ = sum(B == -IBj0);
if ZmwJ == 0
if Nh_K(G1xR,2) >= 2
[PpGv aHm1] = find(B == IBj0);
GRaz = size(PpGv,1);
ORnM = GRaz*(GRaz-1)/2;
dist = zeros(ORnM,3);
cq5g = 0;
for XqJT = 1:GRaz
for nquD = (XqJT+1):GRaz
cq5g = cq5g + 1;
dist(cq5g,1) = XqJT;
dist(cq5g,2) = nquD;
dist(cq5g,3) = abs(PpGv(XqJT)-PpGv(nquD)) + abs(aHm1(XqJT)-aHm1(nquD));
end
end
[g3tC fUZ9] = sort(dist(:,3));
dist = dist(fUZ9,:);
maxstep = min((bbQx*25)+ov0g,2*IBj0+1);
iq60 = false;
for cq5g = 1:ORnM
if dist(cq5g,3) > maxstep+1
break
end
XqJT = dist(cq5g,1);
nquD = dist(cq5g,2);
path = LlL4(B,Fog9,om_Q,[PpGv(XqJT); PpGv(nquD)], [aHm1(XqJT); aHm1(nquD)], -IBj0, bbQx, ov0g, 2*IBj0);
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
YEGI();
iq60 = true;
break
end
end
if ~iq60
continue
end
end
end
[PpGv aHm1] = find(B == IBj0);
LLdQ = size(PpGv,1);
maxstep = min((bbQx*25)+ov0g,IBj0+1);
for LazW = 1:LLdQ
[bn6R W3To] = find(B == -IBj0);
[PpGv aHm1] = find(B == IBj0);
iq60 = false;
path = C4IC(B,Fog9,om_Q,bn6R,W3To,PpGv,aHm1, -IBj0, bbQx, ov0g, IBj0);
if size(path,1) > 0
W = [W; path];
B = TiiY(B,path,-IBj0);
YEGI();
iq60 = true;
end
if ~iq60
break
end
end
end
end
function path = C4IC(B,C0EY,qYQG,rowS,colS,yQBW,Hief,iwBe,bbQx,bY9b,xhiv)
function path = Svwd(vuBz,step)
AZNG(vuBz) = Blu2;
path = zeros(step,4);
uYiE = 0;
Rnka = 0;
eJV4 = zeros(step,1);
cw2f = zeros(step,1);
pKGl = zeros(step,1);
while isempty(find(H3Sc==vuBz,1))
uYiE = uYiE + 1;
eJV4(uYiE,1) = vuBz;
FlDz = AZNG(vuBz);
cw2f(uYiE,1) = FlDz;
vuBz = FlDz;
if Nbqj(vuBz)
Rnka = Rnka + 1;
pKGl(Rnka,1) = vuBz;
end
end
eJV4 = [ eJV4(1:uYiE,:) ; pKGl(1:Rnka,1) ];
cw2f = [ cw2f(1:uYiE,:) ; pKGl(1:Rnka,1) ];
path = [ mod(eJV4,Bc8q) , ceil(eJV4/Bc8q) ,  mod(cw2f,Bc8q) , ceil(cw2f/Bc8q) ];
end
[Bc8q C5T_] = size(B);
Nbqj = false(Bc8q,C5T_);
AZNG = zeros(Bc8q,C5T_);
BcVP = -ones(Bc8q,C5T_);
H3Sc = rowS + (colS-1)*Bc8q;
BcVP(H3Sc) = 0;
BcVP(yQBW + (Hief-1)*Bc8q) = -2;
maxstep = min((bbQx*25)+bY9b,xhiv+1);
Wwc7 = zeros(maxstep+26,1);
Jmmr = [-1 1];
for step = 0:maxstep
if step == 0
jGMD = H3Sc;
elseif Wwc7(step) == 0
continue
else
jGMD = find(BcVP == step);
end
GRaz = numel(jGMD);
for G1xR = 1:GRaz
Blu2 = jGMD(G1xR);
for ME15 = 1:2
vuBz = Blu2 + Jmmr(ME15) * Bc8q;
cHwV = BcVP(vuBz);
if cHwV == -2
path = Svwd(vuBz,step+1);
return
elseif cHwV == -1
if B(vuBz) == 0
BcVP(vuBz) = step+1; Wwc7(step+1) = 1;
AZNG(vuBz) = Blu2;
elseif C0EY(vuBz)
BcVP(vuBz) = step+26; Wwc7(step+26) = 1;
AZNG(vuBz) = Blu2;
Nbqj(vuBz) = true;
end
end
end
for ME15 = 1:2
vuBz = Blu2 + Jmmr(ME15);
cHwV = BcVP(vuBz);
if cHwV == -2
path = Svwd(vuBz,step+1);
return
elseif cHwV == -1
if B(vuBz) == 0
BcVP(vuBz) = step+1; Wwc7(step+1) = 1;
AZNG(vuBz) = Blu2;
elseif qYQG(vuBz)
BcVP(vuBz) = step+26; Wwc7(step+26) = 1;
AZNG(vuBz) = Blu2;
Nbqj(vuBz) = true;
end
end
end
end
end
path = zeros(0,4);
end
function path = F0uZ(B,rowS,colS,n6b1,S5nU,iwBe,Ks71,xhiv)
[Bc8q C5T_] = size(B);
WQYV = zeros(Bc8q,C5T_);
L_vg = zeros(Bc8q,C5T_);
BcVP = -ones(Bc8q,C5T_);
BcVP(rowS+(colS-1)*Bc8q) = 0;
BcVP(n6b1+(S5nU-1)*Bc8q) = -2;
FQMc = zeros(Bc8q*C5T_,1);
dhIz = zeros(Bc8q*C5T_,1);
count = numel(rowS);
FQMc(1:count) = rowS;
dhIz(1:count) = colS;
EoPt=[-1 1 0 0];
dSpY=[0 0 -1 1];
for step = 0:min(Ks71,xhiv)
if count < 1, break, end
GRaz = count;
iMEc = FQMc(1:GRaz);
umDu = dhIz(1:GRaz);
count = 0;
for G1xR = 1:GRaz
ZLok = umDu(G1xR);
Blu2 = iMEc(G1xR);
for BC3q=1:4
PeSE = Blu2 + EoPt(BC3q);
Ulrf = ZLok + dSpY(BC3q);
vuBz = PeSE + (Ulrf-1)*Bc8q;
cHwV = BcVP(vuBz);
if cHwV == -2
c7oz=step+1;
WQYV(PeSE,Ulrf) = iMEc(G1xR);
L_vg(PeSE,Ulrf) = umDu(G1xR);
path = zeros(c7oz,4);
for LazW = 1:c7oz
path(LazW,1:2) = [PeSE Ulrf];
KHKc = WQYV(PeSE,Ulrf);
VTU6 = L_vg(PeSE,Ulrf);
path(LazW,3:4) = [KHKc VTU6];
PeSE = KHKc;
Ulrf = VTU6;
end
return
end
if cHwV == -1 && B(vuBz) == 0
BcVP(vuBz) = step+1;
WQYV(vuBz) = Blu2;
L_vg(vuBz) = ZLok;
count = count + 1; FQMc(count) = PeSE; dhIz(count) = Ulrf;
end
end
end
end
path = [];
end