Finish 2008-05-07 12:00:00 UTC

Marco Tullio 148

by Fabio

Status: Passed
Results: 133869.00 (cyc: 17, node: 6617)
CPU Time: 35.8375
Score: 13422.3
Submitted at: 2008-05-07 11:57:22 UTC
Scored at: 2008-05-07 17:25:29 UTC

Current Rank: 24th

Comments
Please login or create a profile.
Code
function W = solv(B)
QiFR=1562;
odnL = rand(43,1);
W=lpsk(B);
Cm9o = Uilq(B,W);
[cfzc,DiU0] = size(B);
AUEp = B(cfzc:-1:1,:);
AUEp = AUEp.';
[EcAX,FVwZ] = UGTZ(AUEp,[1 2],[1 2],4*cfzc*DiU0);
if Cm9o > FVwZ
W = [cfzc-EcAX(:,2)+1 EcAX(:,1) cfzc-EcAX(:,4)+1 EcAX(:,3)];
Cm9o=FVwZ;
end
HEnp=rand('state');
rand(QiFR,1);
if Cm9o>1000 && rand<.5
[EcAX,FVwZ] = UGTZ(AUEp,[1 2],[1 2],4*cfzc*DiU0);
if Cm9o > FVwZ
W = [cfzc-EcAX(:,2)+1 EcAX(:,1) cfzc-EcAX(:,4)+1 EcAX(:,3)];
Cm9o=FVwZ;
end
end
if Cm9o>1000 && rand<.5
[EcAX,FVwZ] = UGTZ(AUEp,[1 2],[1 2],4*cfzc*DiU0);
if Cm9o > FVwZ
W = [cfzc-EcAX(:,2)+1 EcAX(:,1) cfzc-EcAX(:,4)+1 EcAX(:,3)];
Cm9o=FVwZ;
end
end
rand('state',HEnp);
end
function [W,Cm9o] = UGTZ(wxiC,a1ov,xW8_,Ey92)
[lBSf,vDth]=size(wxiC);
Y8v3= -ones(lBSf+2,vDth+2);
Y8v3(2:end-1,2:end-1)=wxiC;
mxHg = Y8v3;
Ese9 = 4;
if size(mxHg,2) > 20
sMMG = 4;
e5E7 = 8;
ZBTR = 18;
else
sMMG = 3;
e5E7 = 7;
ZBTR = 13;
end
Cm9o = inf;
VKeR = [1 2;2 1];
phaN = [1 3;3 1];
uoOw = [3 2 1;1 2 3];
for OCCD = a1ov
if OCCD == 2
[yNe9 KavY] = LLsP(mxHg,sMMG,VKeR(OCCD,:));
[qPpk rm1_] = R8Ph(KavY,yNe9,e5E7,phaN(OCCD,:));
[hUZQ yfED] = R8Ph(rm1_,qPpk,ZBTR,phaN(OCCD,:));
else
[yNe9 KavY] = LLsP(mxHg,4,VKeR(OCCD,:));
[hUZQ yfED] = R8Ph(KavY,yNe9,11,phaN(OCCD,:));
end
for DRXM = xW8_
x_MU = MNQp(mxHg,yfED,hUZQ,Ese9,ZBTR,uoOw(DRXM,:))-1;
PUyg = Uilq(wxiC,x_MU);
if PUyg <= Cm9o
Cm9o = PUyg;
W = x_MU;
Ese9 = Ese9 - 1;
end
end
end
end
function JwoF = Uilq(B,W)
lBSf=size(B,1);
B(W(:,1)+(W(:,2)-1)*lBSf)=0;
B(W(:,3)+(W(:,4)-1)*lBSf)=0;
JwoF=sum(B(:))+size(W,1)+sum(W(:,1)==W(:,3)&W(:,2)==W(:,4))*24;
end
function [gFis bCJt] = Lq94(B,Xirx)
HgZw = sort(B(B>0),'descend');
vx3S = size(HgZw,1);
if vx3S < 1
gFis = [];
bCJt = 0;
return
end
rKlP=HgZw(diff([0;HgZw])~=0);
gFis = zeros(nnz(rKlP),3);
DO55=histc(HgZw,rKlP(end:-1:1));
gFis(:,1)=rKlP;
gFis(:,2)=DO55(end:-1:1);
bCJt=nnz(rKlP);
if Xirx < 3, return, end
for ddqb = 1:bCJt
if gFis(ddqb,2) >= 2
QzlO = gFis(ddqb,1);
[cgJl uPaL] = find(B == QzlO);
bH6r = 0;
EM_W = size(cgJl,1);
bH6r=sum(abs(diff(cgJl))+abs(diff(uPaL)));
gFis(ddqb,3) = gFis(ddqb,2)*QzlO - 0.85 * bH6r;
end
end
end
function [W B] = LLsP(B,ZBTR,Xirx)
W = [];
[gFis bCJt] = Lq94(B,Xirx);
if bCJt < 1
return
end
gFis=sortrows(gFis,-Xirx);
for ddqb = 1:bCJt
if gFis(ddqb,2) >= 2
QzlO = gFis(ddqb,1);
[cgJl uPaL] = find(B == QzlO);
EM_W = size(cgJl,1);
AKcM = EM_W*(EM_W-1)/2;
dist = zeros(AKcM,3);
[rFi_ VeQW]=find(tril(ones(EM_W),-1));
dist(:,1)=VeQW;
dist(:,2)=rFi_;
dist(:,3)=abs(uPaL(rFi_)-uPaL(VeQW))+abs(cgJl(rFi_)-cgJl(VeQW));
[bH6r DKkb] = sort(dist(:,3));
dist = dist(DKkb,:);
vx3S = 0;
for OCCD = 1:AKcM
if dist(OCCD,3) > ZBTR+1
break
end
uyyA = dist(OCCD,1);
xJ9E = dist(OCCD,2);
path = D2f4(B,[cgJl(uyyA); cgJl(xJ9E)], [uPaL(uyyA); uPaL(xJ9E)], -QzlO, ZBTR, 2*QzlO);
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
vx3S = 2;
edit = [1:(uyyA-1) (uyyA+1):(xJ9E-1) (xJ9E+1):EM_W];
cgJl = [cgJl(uyyA); cgJl(xJ9E); cgJl(edit)];
uPaL = [uPaL(uyyA); uPaL(xJ9E); uPaL(edit)];
break
else
end
end
if vx3S < 2
continue
end
for Pg6D = 3:EM_W
[ElO6 YSar] = find(B == -QzlO);
xyVl = size(ElO6,1);
AKcM =  xyVl * (EM_W - vx3S);
AwAD = (1:xyVl*EM_W)';
xJ9E=mod(AwAD-1,EM_W)+1;
uyyA=ceil(AwAD/EM_W);
vu4W = (xJ9E>vx3S);
uyyA = uyyA(vu4W);
xJ9E = xJ9E(vu4W);
bH6r = abs(ElO6(uyyA)-cgJl(xJ9E)) + abs(YSar(uyyA)-uPaL(xJ9E));
dist = [uyyA,xJ9E,bH6r];
[bH6r DKkb] = sort(dist(:,3));
dist = dist(DKkb,:);
sMeO = false(EM_W,1);
sSNR = false;
for OCCD = 1:AKcM
if dist(OCCD,3) > ZBTR+1
break
end
xJ9E = dist(OCCD,2);
if sMeO(xJ9E)
randperm(4);
continue
end
uyyA = dist(OCCD,1);
path = D2f4(B,[ElO6(uyyA); cgJl(xJ9E)], [YSar(uyyA); uPaL(xJ9E)], -QzlO, ZBTR, QzlO);
sMeO(xJ9E)=true;
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
vx3S = vx3S + 1;
sSNR = true;
cgJl([Pg6D xJ9E]) = cgJl([xJ9E Pg6D]);
uPaL([Pg6D xJ9E]) = uPaL([xJ9E Pg6D]);
break
end
end
if ~sSNR
break
end
end
end
end
end
function [W B] = R8Ph(B,W,enlQ,Xirx)
[gFis bCJt] = Lq94(B,Xirx);
if bCJt < 1, return, end
gFis=sortrows(gFis,-Xirx);
for ddqb = 1:bCJt
QzlO = gFis(ddqb,1);
xyVl = sum(B == -QzlO);
if xyVl == 0
if gFis(ddqb,2) >= 2
[cgJl uPaL] = find(B == QzlO);
EM_W = size(cgJl,1);
AKcM = EM_W*(EM_W-1)*.5;
AwAD = (1:EM_W*EM_W)';
xJ9E=mod(AwAD-1,EM_W)+1;
uyyA=ceil(AwAD/EM_W);
vu4W = (uyyA<xJ9E);
uyyA = uyyA(vu4W);
xJ9E = xJ9E(vu4W);
bH6r = abs(cgJl(uyyA)-cgJl(xJ9E)) + abs(uPaL(uyyA)-uPaL(xJ9E));
dist = [uyyA,xJ9E,bH6r];
[bH6r DKkb] = sort(dist(:,3));
dist = dist(DKkb,:);
maxstep = min(enlQ,2*QzlO+1);
sSNR = false;
for OCCD = 1:AKcM
if dist(OCCD,3) > maxstep+1
break
end
uyyA = dist(OCCD,1);
xJ9E = dist(OCCD,2);
path = D2f4(B,[cgJl(uyyA); cgJl(xJ9E)], [uPaL(uyyA); uPaL(xJ9E)], -QzlO, enlQ, 2*QzlO);
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
sSNR = true;
break
end
end
if ~sSNR
continue
end
end
end
[cgJl uPaL] = find(B == QzlO);
SjgT = size(cgJl,1);
maxstep = min(enlQ,QzlO+1);
for Pg6D = 1:SjgT
[ElO6 YSar] = find(B == -QzlO);
xyVl = size(ElO6,1);
AKcM =  xyVl * (SjgT-Pg6D+1);
dist = zeros(AKcM,3);
OCCD = 0;
for uyyA = 1:xyVl
for xJ9E = Pg6D:SjgT
OCCD = OCCD + 1;
dist(OCCD,1) = uyyA;
dist(OCCD,2) = xJ9E;
dist(OCCD,3) = abs(ElO6(uyyA)-cgJl(xJ9E)) + abs(YSar(uyyA)-uPaL(xJ9E));
end
end
[bH6r DKkb] = sort(dist(:,3));
dist = dist(DKkb,:);
sMeO = false(SjgT,1);
sSNR = false;
for OCCD = 1:AKcM
if dist(OCCD,3) > maxstep+1
break
end
xJ9E = dist(OCCD,2);
if sMeO(xJ9E)
randperm(4);
continue
end
uyyA = dist(OCCD,1);
path = D2f4(B,[ElO6(uyyA); cgJl(xJ9E)], [YSar(uyyA); uPaL(xJ9E)], -QzlO, enlQ, 2*QzlO);
sMeO(xJ9E)=true;
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
sSNR = true;
cgJl([Pg6D xJ9E]) = cgJl([xJ9E Pg6D]);
uPaL([Pg6D xJ9E]) = uPaL([xJ9E Pg6D]);
break
end
end
if ~sSNR
break
end
end
end
end
function [sV1I p3Os] = HBzx(Y8v3,B,path)
[jXZi fhWT] = size(B);
sV1I = Y8v3 == 0;
p3Os = sV1I;
sV1I(:,[1 fhWT]) = false;
p3Os([1 jXZi],:) = false;
for ddqb = 1:size(path,1)
if path(ddqb,1) == path(ddqb,3)
sV1I(path(ddqb,1),path(ddqb,2)) = false;
sV1I(path(ddqb,3),path(ddqb,4)) = false;
end
if path(ddqb,2) == path(ddqb,4)
p3Os(path(ddqb,1),path(ddqb,2)) = false;
p3Os(path(ddqb,3),path(ddqb,4)) = false;
end
end
end
function B = GPi2(B,path,OScx)
B(path(1,1),path(1,2)) = OScx;
for ddqb = 1:size(path,1);
B(path(ddqb,3),path(ddqb,4)) = OScx;
end
end
function path = Bj_1(erFf,k7a_,jXZi,k0Vt)
path = zeros(k0Vt,4);
NJKS = mod(erFf,jXZi);
dDgK = ceil(erFf/jXZi);
for Pg6D = 1:k0Vt
path(Pg6D,1:2) = [NJKS dDgK];
erFf = k7a_(erFf);
NJKS = mod(erFf,jXZi);
dDgK = ceil(erFf/jXZi);
path(Pg6D,3:4) = [NJKS dDgK];
end
end
function path = D2f4(B,cgJl,uPaL,OScx,ZBTR,CArO)
[jXZi fhWT] = size(B);
k7a_ = zeros(jXZi,fhWT);
PwFg = -ones(jXZi,fhWT);
PwFg(cgJl(2),uPaL(2)) = 0;
PwFg(cgJl(1),uPaL(1)) = -2;
PwFg( B == OScx ) = -2;
RCSa = zeros(jXZi*fhWT,1);
RCSa(1) = cgJl(2) + (uPaL(2)-1)*jXZi;
count = 1;
A9BC = [-1 1 -jXZi jXZi];
kF4l = randperm(4);
for step = 0:min(ZBTR,CArO)
if count < 1, break, end
EM_W = count;
erFf = RCSa;
count = 0;
for ddqb = 1:EM_W
sY2o = erFf(ddqb);
for AsZa=1:4
uPlo = sY2o + A9BC(kF4l(AsZa));
R6jm = PwFg(uPlo);
if R6jm == -2
k7a_(uPlo) = sY2o;
path = Bj_1(uPlo,k7a_,jXZi,step+1);
return
end
if R6jm == -1 && B(uPlo) == 0
PwFg(uPlo) = step+1;
k7a_(uPlo) = sY2o;
count = count + 1;
RCSa(count) = uPlo;
end
end
end
end
path = [];
end
function path = Afxv(B,sV1I,p3Os,cgJl,uPaL,OScx,Ese9,enlQ,CArO)
[jXZi fhWT] = size(B);
pmIV = false(jXZi,fhWT);
k7a_ = zeros(jXZi,fhWT);
PwFg = -ones(jXZi,fhWT);
PwFg(cgJl(1),uPaL(1)) = -2;
PwFg( B == OScx ) = -2;
maxstep = min((Ese9*27)+enlQ,CArO+1);
E1OG = zeros(maxstep+28,1);
E1OG(1) = cgJl(2) + (uPaL(2)-1)*jXZi;
A9BC = [-jXZi jXZi -1 1];
for step = 1:maxstep
while E1OG(step)>0
sY2o = E1OG(step);
E1OG(step)=PwFg(sY2o);
for AsZa = 1:4
uPlo = sY2o + A9BC(AsZa);
R6jm = PwFg(uPlo);
if R6jm==-1
if B(uPlo) == 0
PwFg(uPlo) = E1OG(step+1);
E1OG(step+1) = uPlo;
k7a_(uPlo) = sY2o;
elseif (sV1I(uPlo)&&(AsZa<3)) || (p3Os(uPlo)&&(AsZa>2))
PwFg(uPlo) = E1OG(step+26);
E1OG(step+26) = uPlo;
k7a_(uPlo) = sY2o;
pmIV(uPlo) = true;
end
end
if R6jm==-2
step=step+1;
k7a_(uPlo) = sY2o;
NJKS=mod(uPlo,jXZi);
dDgK=ceil(uPlo/jXZi);
path = zeros(step,4);
Pg6D = 0;
while NJKS ~= cgJl(2) || dDgK ~= uPaL(2)
Pg6D = Pg6D + 1;
path(Pg6D,1:2) = [NJKS dDgK];
uPlo = NJKS + (dDgK-1)*jXZi;
oy7C = k7a_(uPlo);
k7DO=mod(oy7C,jXZi);
t957=ceil(oy7C/jXZi);
path(Pg6D,3:4) = [k7DO t957];
NJKS = k7DO;
dDgK = t957;
if pmIV(NJKS,dDgK)
Pg6D = Pg6D + 1;
path(Pg6D,:) = [NJKS dDgK NJKS dDgK];
end
end
path = path(1:Pg6D,:);
return
end
end
end
end
path = [];
end
function W = lpsk(B)
[W,Cm9o] = uveV(B);
iCMC = 0;
uHK1 = round(mod(B(:),2));
if Cm9o < 2100
return
end
[WJTl,fJsz] = size(B);
B = flipud(fliplr(B'));
[NrQm,OIQs] = uveV(B);
if Cm9o > OIQs
W = [WJTl-NrQm(:,2)+1 fJsz-NrQm(:,1)+1 WJTl-NrQm(:,4)+1 fJsz-NrQm(:,3)+1];
end
if uHK1~=iCMC;        W = zeros(0,4);    end
end
function [W,Cm9o] = uveV(B)
[lBSf,vDth]=size(B);
SGtv=nan(lBSf+2,vDth+2);
SGtv(2:end-1,2:end-1)=B;
mxHg = SGtv;
Ese9 = 4;
if size(mxHg,2) > 20
sMMG = 4;
e5E7 = 8;
ZBTR = 12;
else
sMMG = 3;
e5E7 = 7;
ZBTR = 11;
end
Cm9o = inf;
VKeR = [1 2;2 1];
phaN = [1 3;3 1];
uoOw = [3 2 1;1 2 3];
for OCCD = 1:2
if OCCD == 2
[yNe9 KavY] = LNow(mxHg,sMMG,VKeR(OCCD,:));
[qPpk rm1_] = K8WZ(KavY,yNe9,e5E7,phaN(OCCD,:));
[hUZQ yfED] = K8WZ(rm1_,qPpk,ZBTR,phaN(OCCD,:));
else
[yNe9 KavY] = LNow(mxHg,4,VKeR(OCCD,:));
[hUZQ yfED] = K8WZ(KavY,yNe9,11,phaN(OCCD,:));
end
for DRXM = 1:2
if OCCD == 2 && DRXM == 2 && Cm9o > 2100, return, end
x_MU = MNQp(mxHg,yfED,hUZQ,Ese9,ZBTR,uoOw(DRXM,:))-1;
PUyg = Uilq(B,x_MU);
if PUyg <= Cm9o
Cm9o = PUyg;
W = x_MU;
Ese9 = Ese9 - 1;
end
end
end
if lBSf*vDth > 290; return; end
PY6R = sum(W(:,1)==W(:,3)&W(:,2)==W(:,4));
if PY6R <= 4
KrFy = T_SD(B);
xSgA = Uilq(B,KrFy);
if xSgA < Cm9o
W = KrFy;
Cm9o = xSgA;
end
end
end
function path = QUjX(B,cgJl,uPaL,OScx,ZBTR,CArO)
function path = kwqH(XKA5,RtFu,cxdN)
ThMN(XKA5,RtFu) = pmfE(ddqb);
qeNE(XKA5,RtFu) = P3yo(ddqb);
path = zeros(cxdN,4);
for thnu = 1:cxdN
path(thnu,1:2) = [XKA5 RtFu];
Xv3n = ThMN(XKA5,RtFu);
CYkW = qeNE(XKA5,RtFu);
path(thnu,3:4) = [Xv3n CYkW];
XKA5 = Xv3n;
RtFu = CYkW;
end
end
[jXZi fhWT] = size(B);
ThMN = zeros(jXZi,fhWT);
qeNE = zeros(jXZi,fhWT);
PwFg = -ones(jXZi,fhWT);
PwFg(cgJl(2),uPaL(2)) = 0;
PwFg(cgJl(1),uPaL(1)) = -2;
PwFg( B == OScx ) = -2;
c_cA = zeros(jXZi*fhWT,1);
hCk0 = zeros(jXZi*fhWT,1);
count = 1;
c_cA(1) = cgJl(2);
hCk0(1) = uPaL(2);
r_X1=[-1 1 0 0];
CAtK=[0 0 -1 1];
for step = 0:min(ZBTR,CArO)
if count < 1, break, end
EM_W = count;
pmfE = c_cA(1:EM_W);
P3yo = hCk0(1:EM_W);
count = 0;
for ddqb = 1:EM_W
mUpI = P3yo(ddqb);
sY2o = pmfE(ddqb);
for AsZa=1:4
XKA5 = sY2o + r_X1(AsZa);
RtFu = mUpI + CAtK(AsZa);
uPlo = XKA5 + (RtFu-1)*jXZi;
R6jm = PwFg(uPlo);
if R6jm == -2
path = kwqH(XKA5,RtFu,step+1);
return
elseif R6jm == -1 && B(uPlo) == 0
PwFg(uPlo) = step+1;
ThMN(uPlo) = sY2o;
qeNE(uPlo) = mUpI;
count = count + 1; c_cA(count) = XKA5; hCk0(count) = RtFu;
end
end
end
end
path = [];
end
function CYOM = T_SD(xJ9E)
QzlO = unique(xJ9E);
QzlO(1) = [];
aATG = zeros(size(QzlO));
for ddqb = 1:length(aATG)
aATG(ddqb) = nnz(QzlO(ddqb) == xJ9E(:));
end
for ddqb = 1:length(aATG)
if aATG(ddqb) == 1
xJ9E(QzlO(ddqb) == xJ9E(:)) = -1;
end
end
aHsz = zeros(size(xJ9E)+2);
ZftR = repmat(-1,size(aHsz));
ZftR(2:end-1,2:end-1) = xJ9E;
CYOM = [];
[u22i, z9hZ] = find(ZftR>0);
bH6r = (size(ZftR,1)/2 - u22i).^2 + (size(ZftR,2)/2 - z9hZ).^2;
[bH6r, order] = sort(bH6r);
order = order';
for bCJt = 1:length(u22i)-1
qmZH = 0;
GH_W = 32;
for ddqb = order
if aHsz(u22i(ddqb), z9hZ(ddqb))
continue
end
[JwoF, RE_Y, d8Ja] = rtjs(ZftR, aHsz, u22i(ddqb), z9hZ(ddqb), GH_W);
if JwoF > qmZH
qmZH = JwoF;
eU5n = RE_Y;
GH_W = d8Ja;
if GH_W == 1
break
end
end
end
if qmZH == 0
CYOM = CYOM - 1;
return
end
aHsz = GPi2(aHsz, eU5n, ZftR(eU5n(1,1), eU5n(1,2)));
ZftR = GPi2(ZftR, eU5n, ZftR(eU5n(1,1), eU5n(1,2)));
CYOM = [CYOM; eU5n];
end
CYOM = CYOM - 1;
end
function [qmZH, eU5n, GH_W] = rtjs(xJ9E, aHsz, erFf, P3yo, khTh)
qmZH = 0;
eU5n = [];
thnu = [1 -1 0 0];
bCJt = [0 0 1 -1];
if ~any(aHsz(:)==xJ9E(erFf,P3yo))
aHsz = xJ9E;
end
ZftR = xJ9E;
ZftR(ZftR>0) = -1;
ZftR(erFf,P3yo) = 1;
GH_W = Inf;
QzlO = xJ9E(erFf,P3yo);
for ddqb = 1:khTh-2
[u22i, z9hZ] = find(ZftR==ddqb);
for aATG = 1:length(u22i)
for eYQ2 = 1:4
iNa2 = u22i(aATG) + thnu(eYQ2);
xWv3 = z9hZ(aATG) + bCJt(eYQ2);
if aHsz(iNa2,xWv3) == QzlO && ~(iNa2 == erFf && xWv3 == P3yo)
GH_W = ddqb;
break
end
DW9u = ZftR(iNa2,xWv3);
if DW9u == 0
ZftR(iNa2,xWv3) = ddqb+1;
end
end
if GH_W < Inf
break
end
end
if GH_W < Inf
break
end
end
if GH_W == Inf
return
end
qmZH = xJ9E(erFf,P3yo) - GH_W;
if GH_W == 1
eU5n = [erFf, P3yo, iNa2, xWv3];
return
end
eU5n = zeros(GH_W,4);
for step = GH_W:-1:1
for eYQ2 = 1:4
Tdt6 = iNa2 + thnu(eYQ2);
ZCGt = xWv3 + bCJt(eYQ2);
if ZftR(Tdt6, ZCGt) == step
break
end
end
eU5n(step,:) = [Tdt6, ZCGt, iNa2, xWv3];
iNa2 = Tdt6;
xWv3 = ZCGt;
end
end
function [W B] = LNow(B,ZBTR,Xirx)
W = [];
[gFis bCJt] = Lq94(B,Xirx);
if bCJt < 1
return
end
gFis=sortrows(gFis,-Xirx);
for ddqb = 1:bCJt
if gFis(ddqb,2) >= 2
QzlO = gFis(ddqb,1);
[cgJl uPaL] = find(B == QzlO);
EM_W = size(cgJl,1);
AKcM = EM_W*(EM_W-1)/2;
dist = zeros(AKcM,3);
OCCD = 0;
for uyyA = 1:EM_W
for xJ9E = (uyyA+1):EM_W
OCCD = OCCD + 1;
dist(OCCD,1) = uyyA;
dist(OCCD,2) = xJ9E;
dist(OCCD,3) = abs(cgJl(uyyA)-cgJl(xJ9E)) + abs(uPaL(uyyA)-uPaL(xJ9E));
end
end
[bH6r DKkb] = sort(dist(:,3));
dist = dist(DKkb,:);
sEug = reshape(dist(:,1:2)',[],1);
vx3S = 0;
n0wL = 1;
Ixp3 = false(EM_W,1);
for ddqb=1:EM_W
OhPr = find( ~Ixp3(sEug(n0wL:end)) , 1 , 'first');
if isempty(OhPr)
break
end
uyyA = sEug(OhPr);
Distance = abs(cgJl([1:uyyA-1,uyyA+1:end]')-cgJl(uyyA)) + abs(uPaL([1:uyyA-1,uyyA+1:end]')-uPaL(uyyA));
if max(Distance)>ZBTR-1
break
end
path = dVT3(B,cgJl(uyyA),uPaL(uyyA),cgJl([1:uyyA-1,uyyA+1:end]'),uPaL([1:uyyA-1,uyyA+1:end]'), -QzlO, ZBTR, 2*QzlO);
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
vx3S = 2;
break
end
end
if vx3S < 2
continue
end
for thnu = 3:EM_W
[ElO6 YSar] = find(B == -QzlO);
[cgJl uPaL] = find(B == QzlO);
[A7K4,RZZv] = meshgrid(cgJl,ElO6);
[iVwo,znAQ] = meshgrid(cgJl,ElO6);
Distance = abs(A7K4-RZZv) + abs(iVwo-znAQ);
if max(Distance(:))>ZBTR-1
break
end
path = dVT3(B,ElO6,YSar,cgJl,uPaL, -QzlO, ZBTR, 2*QzlO);
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
sSNR = true;
else
break
end
end
end
end
end
function [W B] = K8WZ(B,W,UR09,Xirx)
[gFis bCJt] = Lq94(B,Xirx);
if bCJt < 1, return, end
gFis=sortrows(gFis,-Xirx);
for ddqb = 1:bCJt
QzlO = gFis(ddqb,1);
xyVl = sum(B == -QzlO);
if xyVl == 0
if gFis(ddqb,2) >= 2
[cgJl uPaL] = find(B == QzlO);
EM_W = size(cgJl,1);
AKcM = EM_W*(EM_W-1)/2;
dist = zeros(AKcM,3);
OCCD = 0;
for uyyA = 1:EM_W
for xJ9E = (uyyA+1):EM_W
OCCD = OCCD + 1;
dist(OCCD,1) = uyyA;
dist(OCCD,2) = xJ9E;
dist(OCCD,3) = abs(cgJl(uyyA)-cgJl(xJ9E)) + abs(uPaL(uyyA)-uPaL(xJ9E));
end
end
[bH6r DKkb] = sort(dist(:,3));
dist = dist(DKkb,:);
maxstep = min(UR09,2*QzlO+1);
sSNR = false;
for OCCD = 1:AKcM
if dist(OCCD,3) > maxstep+1
break
end
uyyA = dist(OCCD,1);
xJ9E = dist(OCCD,2);
path = QUjX(B,[cgJl(uyyA); cgJl(xJ9E)], [uPaL(uyyA); uPaL(xJ9E)], -QzlO, UR09, 2*QzlO);
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
sSNR = true;
break
end
end
if ~sSNR
continue
end
end
end
[cgJl uPaL] = find(B == QzlO);
BFA2 = size(cgJl,1);
maxstep = min(UR09,QzlO+1);
for thnu = 1:BFA2
[ElO6 YSar] = find(B == -QzlO);
[cgJl uPaL] = find(B == QzlO);
sSNR = false;
path = dVT3(B,ElO6,YSar,cgJl,uPaL, -QzlO, UR09, QzlO);
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
sSNR = true;
end
if ~sSNR
break
end
end
end
end
function [W B] = MNQp(SGtv,B,W,Ese9,UR09,Xirx)
function GkUC()
for CYOM = 1:size(path,1);
if path(CYOM,1) == path(CYOM,3)
Ccce(path(CYOM,1),path(CYOM,2)) = false;
Ccce(path(CYOM,3),path(CYOM,4)) = false;
if path(CYOM,2) == path(CYOM,4)
B(path(CYOM,1),path(CYOM,2)) = -9999;
end
end
if path(CYOM,2) == path(CYOM,4)
uOTN(path(CYOM,1),path(CYOM,2)) = false;
uOTN(path(CYOM,3),path(CYOM,4)) = false;
end
end
end
[Ccce uOTN] = HBzx(SGtv,B,W);
[gFis bCJt] = Lq94(B,Xirx);
if bCJt < 1, return, end
gFis=sortrows(gFis,-Xirx);
for ddqb = 1:bCJt
QzlO = gFis(ddqb,1);
xyVl = sum(B == -QzlO);
if xyVl == 0
if gFis(ddqb,2) >= 2
[cgJl uPaL] = find(B == QzlO);
EM_W = size(cgJl,1);
AKcM = EM_W*(EM_W-1)/2;
dist = zeros(AKcM,3);
OCCD = 0;
for uyyA = 1:EM_W
for xJ9E = (uyyA+1):EM_W
OCCD = OCCD + 1;
dist(OCCD,1) = uyyA;
dist(OCCD,2) = xJ9E;
dist(OCCD,3) = abs(cgJl(uyyA)-cgJl(xJ9E)) + abs(uPaL(uyyA)-uPaL(xJ9E));
end
end
[bH6r DKkb] = sort(dist(:,3));
dist = dist(DKkb,:);
maxstep = min((Ese9*25)+UR09,2*QzlO+1);
sSNR = false;
for OCCD = 1:AKcM
if dist(OCCD,3) > maxstep+1
break
end
uyyA = dist(OCCD,1);
xJ9E = dist(OCCD,2);
path = Afxv(B,Ccce,uOTN,[cgJl(uyyA); cgJl(xJ9E)], [uPaL(uyyA); uPaL(xJ9E)], -QzlO, Ese9, UR09, 2*QzlO);
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
GkUC();
sSNR = true;
break
end
end
if ~sSNR
continue
end
end
end
[cgJl uPaL] = find(B == QzlO);
BFA2 = size(cgJl,1);
maxstep = min((Ese9*25)+UR09,QzlO+1);
for thnu = 1:BFA2
[ElO6 YSar] = find(B == -QzlO);
[cgJl uPaL] = find(B == QzlO);
sSNR = false;
path = E5Xx(B,Ccce,uOTN,ElO6,YSar,cgJl,uPaL, -QzlO, Ese9, UR09, QzlO);
if size(path,1) > 0
W = [W; path];
B = GPi2(B,path,-QzlO);
GkUC();
sSNR = true;
end
if ~sSNR
break
end
end
end
end
function path = E5Xx(B,sV1I,p3Os,rowS,colS,ZIo5,JBpl,OScx,Ese9,enlQ,CArO)
function path = Bj_1(uPlo,step)
k7a_(uPlo) = sY2o;
path = zeros(step,4);
Pg6D = 0;
fnnm = 0;
NqfM = zeros(step,1);
K0Z9 = zeros(step,1);
gZQE = zeros(step,1);
while isempty(find(U06e==uPlo,1))
Pg6D = Pg6D + 1;
NqfM(Pg6D,1) = uPlo;
oy7C = k7a_(uPlo);
K0Z9(Pg6D,1) = oy7C;
uPlo = oy7C;
if pmIV(uPlo)
fnnm = fnnm + 1;
gZQE(fnnm,1) = uPlo;
end
end
NqfM = [ NqfM(1:Pg6D,:) ; gZQE(1:fnnm,1) ];
K0Z9 = [ K0Z9(1:Pg6D,:) ; gZQE(1:fnnm,1) ];
path = [ mod(NqfM,jXZi) , ceil(NqfM/jXZi) ,  mod(K0Z9,jXZi) , ceil(K0Z9/jXZi) ];
end
[jXZi fhWT] = size(B);
pmIV = false(jXZi,fhWT);
k7a_ = zeros(jXZi,fhWT);
PwFg = -ones(jXZi,fhWT);
U06e = rowS + (colS-1)*jXZi;
PwFg(U06e) = 0;
PwFg(ZIo5 + (JBpl-1)*jXZi) = -2;
maxstep = min((Ese9*25)+enlQ,CArO+1);
dSgK = zeros(maxstep+26,1);
HcUe = [-1 1];
for step = 0:maxstep
if step == 0
erFf = U06e;
elseif dSgK(step) == 0
continue
else
erFf = find(PwFg == step);
end
EM_W = numel(erFf);
for ddqb = 1:EM_W
sY2o = erFf(ddqb);
for iqfk = 1:2
uPlo = sY2o + HcUe(iqfk) * jXZi;
R6jm = PwFg(uPlo);
if R6jm == -2
path = Bj_1(uPlo,step+1);
return
elseif R6jm == -1
if B(uPlo) == 0
PwFg(uPlo) = step+1; dSgK(step+1) = 1;
k7a_(uPlo) = sY2o;
elseif sV1I(uPlo)
PwFg(uPlo) = step+26; dSgK(step+26) = 1;
k7a_(uPlo) = sY2o;
pmIV(uPlo) = true;
end
end
end
for iqfk = 1:2
uPlo = sY2o + HcUe(iqfk);
R6jm = PwFg(uPlo);
if R6jm == -2
path = Bj_1(uPlo,step+1);
return
elseif R6jm == -1
if B(uPlo) == 0
PwFg(uPlo) = step+1; dSgK(step+1) = 1;
k7a_(uPlo) = sY2o;
elseif p3Os(uPlo)
PwFg(uPlo) = step+26; dSgK(step+26) = 1;
k7a_(uPlo) = sY2o;
pmIV(uPlo) = true;
end
end
end
end
end
path = zeros(0,4);
end
function path = dVT3(B,rowS,colS,BA7N,LYzB,OScx,ZBTR,CArO)
[jXZi fhWT] = size(B);
ThMN = zeros(jXZi,fhWT);
qeNE = zeros(jXZi,fhWT);
PwFg = -ones(jXZi,fhWT);
PwFg(rowS+(colS-1)*jXZi) = 0;
PwFg(BA7N+(LYzB-1)*jXZi) = -2;
RCSa = zeros(jXZi*fhWT,1);
hCk0 = zeros(jXZi*fhWT,1);
count = numel(rowS);
RCSa(1:count) = rowS;
hCk0(1:count) = colS;
r_X1=[-1 1 0 0];
CAtK=[0 0 -1 1];
for step = 0:min(ZBTR,CArO)
if count < 1, break, end
EM_W = count;
pmfE = RCSa(1:EM_W);
P3yo = hCk0(1:EM_W);
count = 0;
for ddqb = 1:EM_W
mUpI = P3yo(ddqb);
sY2o = pmfE(ddqb);
for AsZa=1:4
XKA5 = sY2o + r_X1(AsZa);
RtFu = mUpI + CAtK(AsZa);
uPlo = XKA5 + (RtFu-1)*jXZi;
R6jm = PwFg(uPlo);
if R6jm == -2
cxdN=step+1;
ThMN(XKA5,RtFu) = pmfE(ddqb);
qeNE(XKA5,RtFu) = P3yo(ddqb);
path = zeros(cxdN,4);
for thnu = 1:cxdN
path(thnu,1:2) = [XKA5 RtFu];
Xv3n = ThMN(XKA5,RtFu);
CYkW = qeNE(XKA5,RtFu);
path(thnu,3:4) = [Xv3n CYkW];
XKA5 = Xv3n;
RtFu = CYkW;
end
return
end
if R6jm == -1 && B(uPlo) == 0
PwFg(uPlo) = step+1;
ThMN(uPlo) = sY2o;
qeNE(uPlo) = mUpI;
count = count + 1; RCSa(count) = XKA5; hCk0(count) = RtFu;
end
end
end
end
path = [];
end