ID:49686
Title:Marco Tullio 144
Author:Fabio Carnevale
Date:2008-05-07 11:57:13
Score:13431.7050
Result:133966.00 (cyc: 17, node: 6544)
CPU Time:35.6661
Status:Passed
Comments:
Based on:none
Code:
function W = solv(B)
PmqC=3877;
jdBU = rand(43,1);
W=logl(B);
Nv2i = zaCe(B,W);
[N7F2,Yxts] = size(B);
IdSc = B(N7F2:-1:1,:);
IdSc = IdSc.';
[uQJ_,O2jB] = xyKp(IdSc,[1 2],[1 2],4*N7F2*Yxts);
if Nv2i > O2jB
W = [N7F2-uQJ_(:,2)+1 uQJ_(:,1) N7F2-uQJ_(:,4)+1 uQJ_(:,3)];
Nv2i=O2jB;
end
gs2l=rand('state');
rand(PmqC,1);
if Nv2i>1000
[uQJ_,O2jB] = xyKp(IdSc,[1 2],[1 2],4*N7F2*Yxts);
if Nv2i > O2jB
W = [N7F2-uQJ_(:,2)+1 uQJ_(:,1) N7F2-uQJ_(:,4)+1 uQJ_(:,3)];
Nv2i=O2jB;
end
end
rand('state',gs2l);
end
function [W,Nv2i] = xyKp(Ems5,W9zO,ggc4,WKjC)
[JgJ0,sP4c]=size(Ems5);
PxaY= -ones(JgJ0+2,sP4c+2);
PxaY(2:end-1,2:end-1)=Ems5;
kE5C = PxaY;
jlye = 4;
if size(kE5C,2) > 20
tdfM = 4;
iPOH = 8;
EzCM = 18;
else
tdfM = 3;
iPOH = 7;
EzCM = 13;
end
Nv2i = inf;
N9aD = [1 2;2 1];
NOEE = [1 3;3 1];
hXIB = [3 2 1;1 2 3];
for kEz7 = W9zO
if kEz7 == 2
[DO13 S06E] = eU6L(kE5C,tdfM,N9aD(kEz7,:));
[lhRi JIXL] = OP3I(S06E,DO13,iPOH,NOEE(kEz7,:));
[MHqO X39V] = OP3I(JIXL,lhRi,EzCM,NOEE(kEz7,:));
else
[DO13 S06E] = eU6L(kE5C,4,N9aD(kEz7,:));
[MHqO X39V] = OP3I(S06E,DO13,11,NOEE(kEz7,:));
end
for H9s9 = ggc4
Jejb = zlJr(kE5C,X39V,MHqO,jlye,EzCM,hXIB(H9s9,:))-1;
KFK8 = zaCe(Ems5,Jejb);
if KFK8 <= Nv2i
Nv2i = KFK8;
W = Jejb;
jlye = jlye - 1;
end
end
end
end
function aSE0 = zaCe(B,W)
JgJ0=size(B,1);
B(W(:,1)+(W(:,2)-1)*JgJ0)=0;
B(W(:,3)+(W(:,4)-1)*JgJ0)=0;
aSE0=sum(B(:))+size(W,1)+sum(W(:,1)==W(:,3)&W(:,2)==W(:,4))*24;
end
function [P3UL qdb0] = VlWw(B,zXDf)
ApyW = sort(B(B>0),'descend');
Kq4Q = size(ApyW,1);
if Kq4Q < 1
P3UL = [];
qdb0 = 0;
return
end
PrYo=ApyW(diff([0;ApyW])~=0);
P3UL = zeros(nnz(PrYo),3);
zN3e=histc(ApyW,PrYo(end:-1:1));
P3UL(:,1)=PrYo;
P3UL(:,2)=zN3e(end:-1:1);
qdb0=nnz(PrYo);
if zXDf < 3, return, end
for PEP7 = 1:qdb0
if P3UL(PEP7,2) >= 2
k_mM = P3UL(PEP7,1);
[ouKF Fuu5] = find(B == k_mM);
Ls0A = 0;
FtuG = size(ouKF,1);
Ls0A=sum(abs(diff(ouKF))+abs(diff(Fuu5)));
P3UL(PEP7,3) = P3UL(PEP7,2)*k_mM - 0.85 * Ls0A;
end
end
end
function [W B] = eU6L(B,EzCM,zXDf)
W = [];
[P3UL qdb0] = VlWw(B,zXDf);
if qdb0 < 1
return
end
P3UL=sortrows(P3UL,-zXDf);
for PEP7 = 1:qdb0
if P3UL(PEP7,2) >= 2
k_mM = P3UL(PEP7,1);
[ouKF Fuu5] = find(B == k_mM);
FtuG = size(ouKF,1);
LrjS = FtuG*(FtuG-1)/2;
dist = zeros(LrjS,3);
[EQzk mRht]=find(tril(ones(FtuG),-1));
dist(:,1)=mRht;
dist(:,2)=EQzk;
dist(:,3)=abs(Fuu5(EQzk)-Fuu5(mRht))+abs(ouKF(EQzk)-ouKF(mRht));
[Ls0A uzhh] = sort(dist(:,3));
dist = dist(uzhh,:);
Kq4Q = 0;
for kEz7 = 1:LrjS
if dist(kEz7,3) > EzCM+1
break
end
iUu9 = dist(kEz7,1);
z1Qi = dist(kEz7,2);
path = ENzp(B,[ouKF(iUu9); ouKF(z1Qi)], [Fuu5(iUu9); Fuu5(z1Qi)], -k_mM, EzCM, 2*k_mM);
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
Kq4Q = 2;
edit = [1:(iUu9-1) (iUu9+1):(z1Qi-1) (z1Qi+1):FtuG];
ouKF = [ouKF(iUu9); ouKF(z1Qi); ouKF(edit)];
Fuu5 = [Fuu5(iUu9); Fuu5(z1Qi); Fuu5(edit)];
break
else
end
end
if Kq4Q < 2
continue
end
for pojE = 3:FtuG
[iGqc S6_Z] = find(B == -k_mM);
IUyZ = size(iGqc,1);
LrjS =  IUyZ * (FtuG - Kq4Q);
jr7I = (1:IUyZ*FtuG)';
z1Qi=mod(jr7I-1,FtuG)+1;
iUu9=ceil(jr7I/FtuG);
apJE = (z1Qi>Kq4Q);
iUu9 = iUu9(apJE);
z1Qi = z1Qi(apJE);
Ls0A = abs(iGqc(iUu9)-ouKF(z1Qi)) + abs(S6_Z(iUu9)-Fuu5(z1Qi));
dist = [iUu9,z1Qi,Ls0A];
[Ls0A uzhh] = sort(dist(:,3));
dist = dist(uzhh,:);
Bo_u = false(FtuG,1);
w6oY = false;
for kEz7 = 1:LrjS
if dist(kEz7,3) > EzCM+1
break
end
z1Qi = dist(kEz7,2);
if Bo_u(z1Qi)
randperm(4);
continue
end
iUu9 = dist(kEz7,1);
path = ENzp(B,[iGqc(iUu9); ouKF(z1Qi)], [S6_Z(iUu9); Fuu5(z1Qi)], -k_mM, EzCM, k_mM);
Bo_u(z1Qi)=true;
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
Kq4Q = Kq4Q + 1;
w6oY = true;
ouKF([pojE z1Qi]) = ouKF([z1Qi pojE]);
Fuu5([pojE z1Qi]) = Fuu5([z1Qi pojE]);
break
end
end
if ~w6oY
break
end
end
end
end
end
function [W B] = OP3I(B,W,UGtA,zXDf)
[P3UL qdb0] = VlWw(B,zXDf);
if qdb0 < 1, return, end
P3UL=sortrows(P3UL,-zXDf);
for PEP7 = 1:qdb0
k_mM = P3UL(PEP7,1);
IUyZ = sum(B == -k_mM);
if IUyZ == 0
if P3UL(PEP7,2) >= 2
[ouKF Fuu5] = find(B == k_mM);
FtuG = size(ouKF,1);
LrjS = FtuG*(FtuG-1)*.5;
jr7I = (1:FtuG*FtuG)';
z1Qi=mod(jr7I-1,FtuG)+1;
iUu9=ceil(jr7I/FtuG);
apJE = (iUu9<z1Qi);
iUu9 = iUu9(apJE);
z1Qi = z1Qi(apJE);
Ls0A = abs(ouKF(iUu9)-ouKF(z1Qi)) + abs(Fuu5(iUu9)-Fuu5(z1Qi));
dist = [iUu9,z1Qi,Ls0A];
[Ls0A uzhh] = sort(dist(:,3));
dist = dist(uzhh,:);
maxstep = min(UGtA,2*k_mM+1);
w6oY = false;
for kEz7 = 1:LrjS
if dist(kEz7,3) > maxstep+1
break
end
iUu9 = dist(kEz7,1);
z1Qi = dist(kEz7,2);
path = ENzp(B,[ouKF(iUu9); ouKF(z1Qi)], [Fuu5(iUu9); Fuu5(z1Qi)], -k_mM, UGtA, 2*k_mM);
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
w6oY = true;
break
end
end
if ~w6oY
continue
end
end
end
[ouKF Fuu5] = find(B == k_mM);
hQtp = size(ouKF,1);
maxstep = min(UGtA,k_mM+1);
for pojE = 1:hQtp
[iGqc S6_Z] = find(B == -k_mM);
IUyZ = size(iGqc,1);
LrjS =  IUyZ * (hQtp-pojE+1);
dist = zeros(LrjS,3);
kEz7 = 0;
for iUu9 = 1:IUyZ
for z1Qi = pojE:hQtp
kEz7 = kEz7 + 1;
dist(kEz7,1) = iUu9;
dist(kEz7,2) = z1Qi;
dist(kEz7,3) = abs(iGqc(iUu9)-ouKF(z1Qi)) + abs(S6_Z(iUu9)-Fuu5(z1Qi));
end
end
[Ls0A uzhh] = sort(dist(:,3));
dist = dist(uzhh,:);
Bo_u = false(hQtp,1);
w6oY = false;
for kEz7 = 1:LrjS
if dist(kEz7,3) > maxstep+1
break
end
z1Qi = dist(kEz7,2);
if Bo_u(z1Qi)
randperm(4);
continue
end
iUu9 = dist(kEz7,1);
path = ENzp(B,[iGqc(iUu9); ouKF(z1Qi)], [S6_Z(iUu9); Fuu5(z1Qi)], -k_mM, UGtA, 2*k_mM);
Bo_u(z1Qi)=true;
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
w6oY = true;
ouKF([pojE z1Qi]) = ouKF([z1Qi pojE]);
Fuu5([pojE z1Qi]) = Fuu5([z1Qi pojE]);
break
end
end
if ~w6oY
break
end
end
end
end
function [Jrlh mhSq] = mCZR(PxaY,B,path)
[IUq_ Sulf] = size(B);
Jrlh = PxaY == 0;
mhSq = Jrlh;
Jrlh(:,[1 Sulf]) = false;
mhSq([1 IUq_],:) = false;
for PEP7 = 1:size(path,1)
if path(PEP7,1) == path(PEP7,3)
Jrlh(path(PEP7,1),path(PEP7,2)) = false;
Jrlh(path(PEP7,3),path(PEP7,4)) = false;
end
if path(PEP7,2) == path(PEP7,4)
mhSq(path(PEP7,1),path(PEP7,2)) = false;
mhSq(path(PEP7,3),path(PEP7,4)) = false;
end
end
end
function B = jnSB(B,path,PuLR)
B(path(1,1),path(1,2)) = PuLR;
for PEP7 = 1:size(path,1);
B(path(PEP7,3),path(PEP7,4)) = PuLR;
end
end
function path = DMGr(h3DF,T8Qk,IUq_,ZvLh)
path = zeros(ZvLh,4);
ByX2 = mod(h3DF,IUq_);
kZNl = ceil(h3DF/IUq_);
for pojE = 1:ZvLh
path(pojE,1:2) = [ByX2 kZNl];
h3DF = T8Qk(h3DF);
ByX2 = mod(h3DF,IUq_);
kZNl = ceil(h3DF/IUq_);
path(pojE,3:4) = [ByX2 kZNl];
end
end
function path = ENzp(B,ouKF,Fuu5,PuLR,EzCM,yclk)
[IUq_ Sulf] = size(B);
T8Qk = zeros(IUq_,Sulf);
gh_O = -ones(IUq_,Sulf);
gh_O(ouKF(2),Fuu5(2)) = 0;
gh_O(ouKF(1),Fuu5(1)) = -2;
gh_O( B == PuLR ) = -2;
MMsZ = zeros(IUq_*Sulf,1);
MMsZ(1) = ouKF(2) + (Fuu5(2)-1)*IUq_;
count = 1;
X2AT = [-1 1 -IUq_ IUq_];
EYZv = randperm(4);
for step = 0:min(EzCM,yclk)
if count < 1, break, end
FtuG = count;
h3DF = MMsZ;
count = 0;
for PEP7 = 1:FtuG
jLHc = h3DF(PEP7);
for sbmx=1:4
nH2T = jLHc + X2AT(EYZv(sbmx));
Bu4V = gh_O(nH2T);
if Bu4V == -2
T8Qk(nH2T) = jLHc;
path = DMGr(nH2T,T8Qk,IUq_,step+1);
return
end
if Bu4V == -1 && B(nH2T) == 0
gh_O(nH2T) = step+1;
T8Qk(nH2T) = jLHc;
count = count + 1;
MMsZ(count) = nH2T;
end
end
end
end
path = [];
end
function path = XtJS(B,Jrlh,mhSq,ouKF,Fuu5,PuLR,jlye,UGtA,yclk)
[IUq_ Sulf] = size(B);
qJuE = false(IUq_,Sulf);
T8Qk = zeros(IUq_,Sulf);
gh_O = -ones(IUq_,Sulf);
gh_O(ouKF(1),Fuu5(1)) = -2;
gh_O( B == PuLR ) = -2;
maxstep = min((jlye*27)+UGtA,yclk+1);
iYfj = zeros(maxstep+28,1);
iYfj(1) = ouKF(2) + (Fuu5(2)-1)*IUq_;
X2AT = [-IUq_ IUq_ -1 1];
for step = 1:maxstep
while iYfj(step)>0
jLHc = iYfj(step);
iYfj(step)=gh_O(jLHc);
for sbmx = 1:4
nH2T = jLHc + X2AT(sbmx);
Bu4V = gh_O(nH2T);
if Bu4V==-1
if B(nH2T) == 0
gh_O(nH2T) = iYfj(step+1);
iYfj(step+1) = nH2T;
T8Qk(nH2T) = jLHc;
elseif (Jrlh(nH2T)&&(sbmx<3)) || (mhSq(nH2T)&&(sbmx>2))
gh_O(nH2T) = iYfj(step+26);
iYfj(step+26) = nH2T;
T8Qk(nH2T) = jLHc;
qJuE(nH2T) = true;
end
end
if Bu4V==-2
step=step+1;
T8Qk(nH2T) = jLHc;
ByX2=mod(nH2T,IUq_);
kZNl=ceil(nH2T/IUq_);
path = zeros(step,4);
pojE = 0;
while ByX2 ~= ouKF(2) || kZNl ~= Fuu5(2)
pojE = pojE + 1;
path(pojE,1:2) = [ByX2 kZNl];
nH2T = ByX2 + (kZNl-1)*IUq_;
e1DO = T8Qk(nH2T);
sToE=mod(e1DO,IUq_);
KNzr=ceil(e1DO/IUq_);
path(pojE,3:4) = [sToE KNzr];
ByX2 = sToE;
kZNl = KNzr;
if qJuE(ByX2,kZNl)
pojE = pojE + 1;
path(pojE,:) = [ByX2 kZNl ByX2 kZNl];
end
end
path = path(1:pojE,:);
return
end
end
end
end
path = [];
end
function W = logl(B)
[W,Nv2i] = q4C4(B);
hLso = 0;
qnTo = round(mod(B(:),2));
if Nv2i < 2100
return
end
[WOTR,KEBC] = size(B);
B = flipud(fliplr(B'));
[bFC0,g_rZ] = q4C4(B);
if Nv2i > g_rZ
W = [WOTR-bFC0(:,2)+1 KEBC-bFC0(:,1)+1 WOTR-bFC0(:,4)+1 KEBC-bFC0(:,3)+1];
end
if qnTo~=hLso;        W = zeros(0,4);    end
end
function [W,Nv2i] = q4C4(B)
[JgJ0,sP4c]=size(B);
nrtG=nan(JgJ0+2,sP4c+2);
nrtG(2:end-1,2:end-1)=B;
kE5C = nrtG;
jlye = 4;
if size(kE5C,2) > 20
tdfM = 4;
iPOH = 8;
EzCM = 12;
else
tdfM = 3;
iPOH = 7;
EzCM = 11;
end
Nv2i = inf;
N9aD = [1 2;2 1];
NOEE = [1 3;3 1];
hXIB = [3 2 1;1 2 3];
for kEz7 = 1:2
if kEz7 == 2
[DO13 S06E] = bzlo(kE5C,tdfM,N9aD(kEz7,:));
[lhRi JIXL] = GnT4(S06E,DO13,iPOH,NOEE(kEz7,:));
[MHqO X39V] = GnT4(JIXL,lhRi,EzCM,NOEE(kEz7,:));
else
[DO13 S06E] = bzlo(kE5C,4,N9aD(kEz7,:));
[MHqO X39V] = GnT4(S06E,DO13,11,NOEE(kEz7,:));
end
for H9s9 = 1:2
if kEz7 == 2 && H9s9 == 2 && Nv2i > 2100, return, end
Jejb = zlJr(kE5C,X39V,MHqO,jlye,EzCM,hXIB(H9s9,:))-1;
KFK8 = zaCe(B,Jejb);
if KFK8 <= Nv2i
Nv2i = KFK8;
W = Jejb;
jlye = jlye - 1;
end
end
end
if JgJ0*sP4c > 290; return; end
IMjK = sum(W(:,1)==W(:,3)&W(:,2)==W(:,4));
if IMjK <= 4
mpDI = U31V(B);
C8v7 = zaCe(B,mpDI);
if C8v7 < Nv2i
W = mpDI;
Nv2i = C8v7;
end
end
end
function path = ruyM(B,ouKF,Fuu5,PuLR,EzCM,yclk)
function path = sOpg(hfZe,vJFD,yMuv)
agcF(hfZe,vJFD) = EQxk(PEP7);
m9R2(hfZe,vJFD) = Uymy(PEP7);
path = zeros(yMuv,4);
for XF56 = 1:yMuv
path(XF56,1:2) = [hfZe vJFD];
TaWE = agcF(hfZe,vJFD);
XUM2 = m9R2(hfZe,vJFD);
path(XF56,3:4) = [TaWE XUM2];
hfZe = TaWE;
vJFD = XUM2;
end
end
[IUq_ Sulf] = size(B);
agcF = zeros(IUq_,Sulf);
m9R2 = zeros(IUq_,Sulf);
gh_O = -ones(IUq_,Sulf);
gh_O(ouKF(2),Fuu5(2)) = 0;
gh_O(ouKF(1),Fuu5(1)) = -2;
gh_O( B == PuLR ) = -2;
Ngq5 = zeros(IUq_*Sulf,1);
CDBQ = zeros(IUq_*Sulf,1);
count = 1;
Ngq5(1) = ouKF(2);
CDBQ(1) = Fuu5(2);
yGhq=[-1 1 0 0];
lc02=[0 0 -1 1];
for step = 0:min(EzCM,yclk)
if count < 1, break, end
FtuG = count;
EQxk = Ngq5(1:FtuG);
Uymy = CDBQ(1:FtuG);
count = 0;
for PEP7 = 1:FtuG
aUfw = Uymy(PEP7);
jLHc = EQxk(PEP7);
for sbmx=1:4
hfZe = jLHc + yGhq(sbmx);
vJFD = aUfw + lc02(sbmx);
nH2T = hfZe + (vJFD-1)*IUq_;
Bu4V = gh_O(nH2T);
if Bu4V == -2
path = sOpg(hfZe,vJFD,step+1);
return
elseif Bu4V == -1 && B(nH2T) == 0
gh_O(nH2T) = step+1;
agcF(nH2T) = jLHc;
m9R2(nH2T) = aUfw;
count = count + 1; Ngq5(count) = hfZe; CDBQ(count) = vJFD;
end
end
end
end
path = [];
end
function zZnB = U31V(z1Qi)
k_mM = unique(z1Qi);
k_mM(1) = [];
FtyT = zeros(size(k_mM));
for PEP7 = 1:length(FtyT)
FtyT(PEP7) = nnz(k_mM(PEP7) == z1Qi(:));
end
for PEP7 = 1:length(FtyT)
if FtyT(PEP7) == 1
z1Qi(k_mM(PEP7) == z1Qi(:)) = -1;
end
end
jsIW = zeros(size(z1Qi)+2);
ns_n = repmat(-1,size(jsIW));
ns_n(2:end-1,2:end-1) = z1Qi;
zZnB = [];
[kkP9, xbGD] = find(ns_n>0);
Ls0A = (size(ns_n,1)/2 - kkP9).^2 + (size(ns_n,2)/2 - xbGD).^2;
[Ls0A, order] = sort(Ls0A);
order = order';
for qdb0 = 1:length(kkP9)-1
bL93 = 0;
Agg7 = 32;
for PEP7 = order
if jsIW(kkP9(PEP7), xbGD(PEP7))
continue
end
[aSE0, TkWE, Oju7] = DclR(ns_n, jsIW, kkP9(PEP7), xbGD(PEP7), Agg7);
if aSE0 > bL93
bL93 = aSE0;
K4B5 = TkWE;
Agg7 = Oju7;
if Agg7 == 1
break
end
end
end
if bL93 == 0
zZnB = zZnB - 1;
return
end
jsIW = jnSB(jsIW, K4B5, ns_n(K4B5(1,1), K4B5(1,2)));
ns_n = jnSB(ns_n, K4B5, ns_n(K4B5(1,1), K4B5(1,2)));
zZnB = [zZnB; K4B5];
end
zZnB = zZnB - 1;
end
function [bL93, K4B5, Agg7] = DclR(z1Qi, jsIW, h3DF, Uymy, Tu4J)
bL93 = 0;
K4B5 = [];
XF56 = [1 -1 0 0];
qdb0 = [0 0 1 -1];
if ~any(jsIW(:)==z1Qi(h3DF,Uymy))
jsIW = z1Qi;
end
ns_n = z1Qi;
ns_n(ns_n>0) = -1;
ns_n(h3DF,Uymy) = 1;
Agg7 = Inf;
k_mM = z1Qi(h3DF,Uymy);
for PEP7 = 1:Tu4J-2
[kkP9, xbGD] = find(ns_n==PEP7);
for FtyT = 1:length(kkP9)
for ZSwH = 1:4
jJJa = kkP9(FtyT) + XF56(ZSwH);
ucgP = xbGD(FtyT) + qdb0(ZSwH);
if jsIW(jJJa,ucgP) == k_mM && ~(jJJa == h3DF && ucgP == Uymy)
Agg7 = PEP7;
break
end
vPMg = ns_n(jJJa,ucgP);
if vPMg == 0
ns_n(jJJa,ucgP) = PEP7+1;
end
end
if Agg7 < Inf
break
end
end
if Agg7 < Inf
break
end
end
if Agg7 == Inf
return
end
bL93 = z1Qi(h3DF,Uymy) - Agg7;
if Agg7 == 1
K4B5 = [h3DF, Uymy, jJJa, ucgP];
return
end
K4B5 = zeros(Agg7,4);
for step = Agg7:-1:1
for ZSwH = 1:4
XSfx = jJJa + XF56(ZSwH);
wdTU = ucgP + qdb0(ZSwH);
if ns_n(XSfx, wdTU) == step
break
end
end
K4B5(step,:) = [XSfx, wdTU, jJJa, ucgP];
jJJa = XSfx;
ucgP = wdTU;
end
end
function [W B] = bzlo(B,EzCM,zXDf)
W = [];
[P3UL qdb0] = VlWw(B,zXDf);
if qdb0 < 1
return
end
P3UL=sortrows(P3UL,-zXDf);
for PEP7 = 1:qdb0
if P3UL(PEP7,2) >= 2
k_mM = P3UL(PEP7,1);
[ouKF Fuu5] = find(B == k_mM);
FtuG = size(ouKF,1);
LrjS = FtuG*(FtuG-1)/2;
dist = zeros(LrjS,3);
kEz7 = 0;
for iUu9 = 1:FtuG
for z1Qi = (iUu9+1):FtuG
kEz7 = kEz7 + 1;
dist(kEz7,1) = iUu9;
dist(kEz7,2) = z1Qi;
dist(kEz7,3) = abs(ouKF(iUu9)-ouKF(z1Qi)) + abs(Fuu5(iUu9)-Fuu5(z1Qi));
end
end
[Ls0A uzhh] = sort(dist(:,3));
dist = dist(uzhh,:);
MTfO = reshape(dist(:,1:2)',[],1);
Kq4Q = 0;
Hacx = 1;
o4yK = false(FtuG,1);
for PEP7=1:FtuG
STtf = find( ~o4yK(MTfO(Hacx:end)) , 1 , 'first');
if isempty(STtf)
break
end
iUu9 = MTfO(STtf);
Distance = abs(ouKF([1:iUu9-1,iUu9+1:end]')-ouKF(iUu9)) + abs(Fuu5([1:iUu9-1,iUu9+1:end]')-Fuu5(iUu9));
if max(Distance)>EzCM-1
break
end
path = XH6y(B,ouKF(iUu9),Fuu5(iUu9),ouKF([1:iUu9-1,iUu9+1:end]'),Fuu5([1:iUu9-1,iUu9+1:end]'), -k_mM, EzCM, 2*k_mM);
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
Kq4Q = 2;
break
end
end
if Kq4Q < 2
continue
end
for XF56 = 3:FtuG
[iGqc S6_Z] = find(B == -k_mM);
[ouKF Fuu5] = find(B == k_mM);
[GONr,BBZf] = meshgrid(ouKF,iGqc);
[mBxX,L8yQ] = meshgrid(ouKF,iGqc);
Distance = abs(GONr-BBZf) + abs(mBxX-L8yQ);
if max(Distance(:))>EzCM-1
break
end
path = XH6y(B,iGqc,S6_Z,ouKF,Fuu5, -k_mM, EzCM, 2*k_mM);
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
w6oY = true;
else
break
end
end
end
end
end
function [W B] = GnT4(B,W,J2YR,zXDf)
[P3UL qdb0] = VlWw(B,zXDf);
if qdb0 < 1, return, end
P3UL=sortrows(P3UL,-zXDf);
for PEP7 = 1:qdb0
k_mM = P3UL(PEP7,1);
IUyZ = sum(B == -k_mM);
if IUyZ == 0
if P3UL(PEP7,2) >= 2
[ouKF Fuu5] = find(B == k_mM);
FtuG = size(ouKF,1);
LrjS = FtuG*(FtuG-1)/2;
dist = zeros(LrjS,3);
kEz7 = 0;
for iUu9 = 1:FtuG
for z1Qi = (iUu9+1):FtuG
kEz7 = kEz7 + 1;
dist(kEz7,1) = iUu9;
dist(kEz7,2) = z1Qi;
dist(kEz7,3) = abs(ouKF(iUu9)-ouKF(z1Qi)) + abs(Fuu5(iUu9)-Fuu5(z1Qi));
end
end
[Ls0A uzhh] = sort(dist(:,3));
dist = dist(uzhh,:);
maxstep = min(J2YR,2*k_mM+1);
w6oY = false;
for kEz7 = 1:LrjS
if dist(kEz7,3) > maxstep+1
break
end
iUu9 = dist(kEz7,1);
z1Qi = dist(kEz7,2);
path = ruyM(B,[ouKF(iUu9); ouKF(z1Qi)], [Fuu5(iUu9); Fuu5(z1Qi)], -k_mM, J2YR, 2*k_mM);
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
w6oY = true;
break
end
end
if ~w6oY
continue
end
end
end
[ouKF Fuu5] = find(B == k_mM);
RI5x = size(ouKF,1);
maxstep = min(J2YR,k_mM+1);
for XF56 = 1:RI5x
[iGqc S6_Z] = find(B == -k_mM);
[ouKF Fuu5] = find(B == k_mM);
w6oY = false;
path = XH6y(B,iGqc,S6_Z,ouKF,Fuu5, -k_mM, J2YR, k_mM);
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
w6oY = true;
end
if ~w6oY
break
end
end
end
end
function [W B] = zlJr(nrtG,B,W,jlye,J2YR,zXDf)
function rqD2()
for zZnB = 1:size(path,1);
if path(zZnB,1) == path(zZnB,3)
dW9D(path(zZnB,1),path(zZnB,2)) = false;
dW9D(path(zZnB,3),path(zZnB,4)) = false;
if path(zZnB,2) == path(zZnB,4)
B(path(zZnB,1),path(zZnB,2)) = -9999;
end
end
if path(zZnB,2) == path(zZnB,4)
JUDy(path(zZnB,1),path(zZnB,2)) = false;
JUDy(path(zZnB,3),path(zZnB,4)) = false;
end
end
end
[dW9D JUDy] = mCZR(nrtG,B,W);
[P3UL qdb0] = VlWw(B,zXDf);
if qdb0 < 1, return, end
P3UL=sortrows(P3UL,-zXDf);
for PEP7 = 1:qdb0
k_mM = P3UL(PEP7,1);
IUyZ = sum(B == -k_mM);
if IUyZ == 0
if P3UL(PEP7,2) >= 2
[ouKF Fuu5] = find(B == k_mM);
FtuG = size(ouKF,1);
LrjS = FtuG*(FtuG-1)/2;
dist = zeros(LrjS,3);
kEz7 = 0;
for iUu9 = 1:FtuG
for z1Qi = (iUu9+1):FtuG
kEz7 = kEz7 + 1;
dist(kEz7,1) = iUu9;
dist(kEz7,2) = z1Qi;
dist(kEz7,3) = abs(ouKF(iUu9)-ouKF(z1Qi)) + abs(Fuu5(iUu9)-Fuu5(z1Qi));
end
end
[Ls0A uzhh] = sort(dist(:,3));
dist = dist(uzhh,:);
maxstep = min((jlye*25)+J2YR,2*k_mM+1);
w6oY = false;
for kEz7 = 1:LrjS
if dist(kEz7,3) > maxstep+1
break
end
iUu9 = dist(kEz7,1);
z1Qi = dist(kEz7,2);
path = XtJS(B,dW9D,JUDy,[ouKF(iUu9); ouKF(z1Qi)], [Fuu5(iUu9); Fuu5(z1Qi)], -k_mM, jlye, J2YR, 2*k_mM);
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
rqD2();
w6oY = true;
break
end
end
if ~w6oY
continue
end
end
end
[ouKF Fuu5] = find(B == k_mM);
RI5x = size(ouKF,1);
maxstep = min((jlye*25)+J2YR,k_mM+1);
for XF56 = 1:RI5x
[iGqc S6_Z] = find(B == -k_mM);
[ouKF Fuu5] = find(B == k_mM);
w6oY = false;
path = EvR_(B,dW9D,JUDy,iGqc,S6_Z,ouKF,Fuu5, -k_mM, jlye, J2YR, k_mM);
if size(path,1) > 0
W = [W; path];
B = jnSB(B,path,-k_mM);
rqD2();
w6oY = true;
end
if ~w6oY
break
end
end
end
end
function path = EvR_(B,Jrlh,mhSq,rowS,colS,vW9H,Jpcc,PuLR,jlye,UGtA,yclk)
function path = DMGr(nH2T,step)
T8Qk(nH2T) = jLHc;
path = zeros(step,4);
pojE = 0;
zBgN = 0;
IZwj = zeros(step,1);
EarT = zeros(step,1);
WV4p = zeros(step,1);
while isempty(find(Er3b==nH2T,1))
pojE = pojE + 1;
IZwj(pojE,1) = nH2T;
e1DO = T8Qk(nH2T);
EarT(pojE,1) = e1DO;
nH2T = e1DO;
if qJuE(nH2T)
zBgN = zBgN + 1;
WV4p(zBgN,1) = nH2T;
end
end
IZwj = [ IZwj(1:pojE,:) ; WV4p(1:zBgN,1) ];
EarT = [ EarT(1:pojE,:) ; WV4p(1:zBgN,1) ];
path = [ mod(IZwj,IUq_) , ceil(IZwj/IUq_) ,  mod(EarT,IUq_) , ceil(EarT/IUq_) ];
end
[IUq_ Sulf] = size(B);
qJuE = false(IUq_,Sulf);
T8Qk = zeros(IUq_,Sulf);
gh_O = -ones(IUq_,Sulf);
Er3b = rowS + (colS-1)*IUq_;
gh_O(Er3b) = 0;
gh_O(vW9H + (Jpcc-1)*IUq_) = -2;
maxstep = min((jlye*25)+UGtA,yclk+1);
Gcbv = zeros(maxstep+26,1);
NvZP = [-1 1];
for step = 0:maxstep
if step == 0
h3DF = Er3b;
elseif Gcbv(step) == 0
continue
else
h3DF = find(gh_O == step);
end
FtuG = numel(h3DF);
for PEP7 = 1:FtuG
jLHc = h3DF(PEP7);
for UgFn = 1:2
nH2T = jLHc + NvZP(UgFn) * IUq_;
Bu4V = gh_O(nH2T);
if Bu4V == -2
path = DMGr(nH2T,step+1);
return
elseif Bu4V == -1
if B(nH2T) == 0
gh_O(nH2T) = step+1; Gcbv(step+1) = 1;
T8Qk(nH2T) = jLHc;
elseif Jrlh(nH2T)
gh_O(nH2T) = step+26; Gcbv(step+26) = 1;
T8Qk(nH2T) = jLHc;
qJuE(nH2T) = true;
end
end
end
for UgFn = 1:2
nH2T = jLHc + NvZP(UgFn);
Bu4V = gh_O(nH2T);
if Bu4V == -2
path = DMGr(nH2T,step+1);
return
elseif Bu4V == -1
if B(nH2T) == 0
gh_O(nH2T) = step+1; Gcbv(step+1) = 1;
T8Qk(nH2T) = jLHc;
elseif mhSq(nH2T)
gh_O(nH2T) = step+26; Gcbv(step+26) = 1;
T8Qk(nH2T) = jLHc;
qJuE(nH2T) = true;
end
end
end
end
end
path = zeros(0,4);
end
function path = XH6y(B,rowS,colS,QK5C,gAdM,PuLR,EzCM,yclk)
[IUq_ Sulf] = size(B);
agcF = zeros(IUq_,Sulf);
m9R2 = zeros(IUq_,Sulf);
gh_O = -ones(IUq_,Sulf);
gh_O(rowS+(colS-1)*IUq_) = 0;
gh_O(QK5C+(gAdM-1)*IUq_) = -2;
MMsZ = zeros(IUq_*Sulf,1);
CDBQ = zeros(IUq_*Sulf,1);
count = numel(rowS);
MMsZ(1:count) = rowS;
CDBQ(1:count) = colS;
yGhq=[-1 1 0 0];
lc02=[0 0 -1 1];
for step = 0:min(EzCM,yclk)
if count < 1, break, end
FtuG = count;
EQxk = MMsZ(1:FtuG);
Uymy = CDBQ(1:FtuG);
count = 0;
for PEP7 = 1:FtuG
aUfw = Uymy(PEP7);
jLHc = EQxk(PEP7);
for sbmx=1:4
hfZe = jLHc + yGhq(sbmx);
vJFD = aUfw + lc02(sbmx);
nH2T = hfZe + (vJFD-1)*IUq_;
Bu4V = gh_O(nH2T);
if Bu4V == -2
yMuv=step+1;
agcF(hfZe,vJFD) = EQxk(PEP7);
m9R2(hfZe,vJFD) = Uymy(PEP7);
path = zeros(yMuv,4);
for XF56 = 1:yMuv
path(XF56,1:2) = [hfZe vJFD];
TaWE = agcF(hfZe,vJFD);
XUM2 = m9R2(hfZe,vJFD);
path(XF56,3:4) = [TaWE XUM2];
hfZe = TaWE;
vJFD = XUM2;
end
return
end
if Bu4V == -1 && B(nH2T) == 0
gh_O(nH2T) = step+1;
agcF(nH2T) = jLHc;
m9R2(nH2T) = aUfw;
count = count + 1; MMsZ(count) = hfZe; CDBQ(count) = vJFD;
end
end
end
end
path = [];
end