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

asdas13

by Fabio

Status: Passed
Results: 311043.00 (cyc: 21, node: 7336)
CPU Time: 40.3811
Score: 31152.2
Submitted at: 2008-05-07 02:03:03 UTC
Scored at: 2008-05-07 02:21:12 UTC

Current Rank: 3481st
Based on: asdas12 (diff)
Basis for: asdas14 (diff)

Comments
Please login or create a profile.
Code
function W = solv(B)
I7TFLBTBj0=[28044  29361  21163  58931];
A4jlhPLp74=[4];
o3dpHHFR5C = 1+mod(sum(B(:)),numel(I7TFLBTBj0));
rand('twister',I7TFLBTBj0(o3dpHHFR5C));
qE6ZHgWNNT = rand(77,1);
W=uMjpjbn9Fy(B);
Sxh3DJMk_q = MLUbJVBPKf(B,W);
[nDzWBeeLyZ,acS3wp9IFR] = size(B);
Aas8n0yTgP = B(nDzWBeeLyZ:-1:1,:);
Aas8n0yTgP = Aas8n0yTgP.';
[j5Ku79TLXv,zFNLUcL5ZN] = KaTv4sIhqw(Aas8n0yTgP,[1 2],[1 2],4*nDzWBeeLyZ*acS3wp9IFR);
if Sxh3DJMk_q > zFNLUcL5ZN
W = [nDzWBeeLyZ-j5Ku79TLXv(:,2)+1 j5Ku79TLXv(:,1) nDzWBeeLyZ-j5Ku79TLXv(:,4)+1 j5Ku79TLXv(:,3)];
Sxh3DJMk_q=zFNLUcL5ZN;
end
if o3dpHHFR5C~=A4jlhPLp74
W = zeros(0,4);
end
end
function [W,Sxh3DJMk_q] = KaTv4sIhqw(UYQOE9UoF8,YNm340WdLD,jT2Xf6FFPF,PDb9vE1YgW)
[KXdVbEcIL7,cd1HKQllly]=size(UYQOE9UoF8);
iLN9d6_2yH= -ones(KXdVbEcIL7+2,cd1HKQllly+2);
iLN9d6_2yH(2:end-1,2:end-1)=UYQOE9UoF8;
y2eGN3gKLV = iLN9d6_2yH;
t161DzmNiH = 4;
if size(y2eGN3gKLV,2) > 20
MW1b3mMafN = 4;
H3jbdugMMG = 8;
bIAxIDEkU8 = 18;
else
MW1b3mMafN = 3;
H3jbdugMMG = 7;
bIAxIDEkU8 = 12;
end
Sxh3DJMk_q = inf;
ceoBxnrfJH = [1 2;2 1];
QWyeGqqOR6 = [1 3;3 1];
h0xtVgxWCw = [3 2 1;1 2 3];
for H0ipQkJFJy = YNm340WdLD
if H0ipQkJFJy == 2
[Imsw0in2zJ beAN4hMNnq] = DZUsPKATJW(y2eGN3gKLV,MW1b3mMafN,ceoBxnrfJH(H0ipQkJFJy,:));
[eOIkkTwkxt vUQ6c0W10R] = p1O4Fka8NB(beAN4hMNnq,Imsw0in2zJ,H3jbdugMMG,QWyeGqqOR6(H0ipQkJFJy,:));
[m5nLA43u5k vmtTy9p__0] = p1O4Fka8NB(vUQ6c0W10R,eOIkkTwkxt,bIAxIDEkU8,QWyeGqqOR6(H0ipQkJFJy,:));
else
[Imsw0in2zJ beAN4hMNnq] = DZUsPKATJW(y2eGN3gKLV,4,ceoBxnrfJH(H0ipQkJFJy,:));
[m5nLA43u5k vmtTy9p__0] = p1O4Fka8NB(beAN4hMNnq,Imsw0in2zJ,11,QWyeGqqOR6(H0ipQkJFJy,:));
end
for XTKDyHdmZ4 = jT2Xf6FFPF
QgIYgcImFF = ZPyyowP7k4(y2eGN3gKLV,vmtTy9p__0,m5nLA43u5k,t161DzmNiH,bIAxIDEkU8,h0xtVgxWCw(XTKDyHdmZ4,:))-1;
OzT_9PG3qE = MLUbJVBPKf(UYQOE9UoF8,QgIYgcImFF);
if OzT_9PG3qE <= Sxh3DJMk_q
Sxh3DJMk_q = OzT_9PG3qE;
W = QgIYgcImFF;
t161DzmNiH = t161DzmNiH - 1;
end
end
end
end
function SCG_TlN1bz = MLUbJVBPKf(B,W)
KXdVbEcIL7=size(B,1);
B(W(:,1)+(W(:,2)-1)*KXdVbEcIL7)=0;
B(W(:,3)+(W(:,4)-1)*KXdVbEcIL7)=0;
SCG_TlN1bz=sum(B(:))+size(W,1)+sum(W(:,1)==W(:,3)&W(:,2)==W(:,4))*24;
end
function [Fvx88O464V R0qjsCiqpH] = H8Ok0XOzvD(B,ciAu_E5fzM)
EgGDrWyKdW = sort(B(B>0),'descend');
BNTQtxGdOt = size(EgGDrWyKdW,1);
if BNTQtxGdOt < 1
Fvx88O464V = [];
R0qjsCiqpH = 0;
return
end
yHCIOr_ekt=EgGDrWyKdW(diff([0;EgGDrWyKdW])~=0);
Fvx88O464V = zeros(nnz(yHCIOr_ekt),3);
ooAbGbMzBY=histc(EgGDrWyKdW,yHCIOr_ekt(end:-1:1));
Fvx88O464V(:,1)=yHCIOr_ekt;
Fvx88O464V(:,2)=ooAbGbMzBY(end:-1:1);
R0qjsCiqpH=nnz(yHCIOr_ekt);
if ciAu_E5fzM < 3, return, end
for aJAyGSFRIL = 1:R0qjsCiqpH
if Fvx88O464V(aJAyGSFRIL,2) >= 2
yKemFy7uy5 = Fvx88O464V(aJAyGSFRIL,1);
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
gwRSVDoOYi = 0;
uqU4tROcTv = size(c9Grt0XYkZ,1);
gwRSVDoOYi=sum(abs(diff(c9Grt0XYkZ))+abs(diff(jlKtAnUR42)));
Fvx88O464V(aJAyGSFRIL,3) = Fvx88O464V(aJAyGSFRIL,2)*yKemFy7uy5 - 0.85 * gwRSVDoOYi;
end
end
end
function [W B] = DZUsPKATJW(B,bIAxIDEkU8,ciAu_E5fzM)
W = [];
[Fvx88O464V R0qjsCiqpH] = H8Ok0XOzvD(B,ciAu_E5fzM);
if R0qjsCiqpH < 1
return
end
Fvx88O464V=sortrows(Fvx88O464V,-ciAu_E5fzM);
for aJAyGSFRIL = 1:R0qjsCiqpH
if Fvx88O464V(aJAyGSFRIL,2) >= 2
yKemFy7uy5 = Fvx88O464V(aJAyGSFRIL,1);
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
uqU4tROcTv = size(c9Grt0XYkZ,1);
MLRRrODFak = uqU4tROcTv*(uqU4tROcTv-1)/2;
dist = zeros(MLRRrODFak,3);
[Wog5iV4ioI nn3oGUG1U5]=find(tril(ones(uqU4tROcTv),-1));
dist(:,1)=nn3oGUG1U5;
dist(:,2)=Wog5iV4ioI;
dist(:,3)=abs(jlKtAnUR42(Wog5iV4ioI)-jlKtAnUR42(nn3oGUG1U5))+abs(c9Grt0XYkZ(Wog5iV4ioI)-c9Grt0XYkZ(nn3oGUG1U5));
[gwRSVDoOYi pIin1Zd1bI] = sort(dist(:,3));
dist = dist(pIin1Zd1bI,:);
BNTQtxGdOt = 0;
for H0ipQkJFJy = 1:MLRRrODFak
if dist(H0ipQkJFJy,3) > bIAxIDEkU8+1
break
end
jhISHLHVn7 = dist(H0ipQkJFJy,1);
MHtEGnVgFV = dist(H0ipQkJFJy,2);
path = vnBzAS_E0r(B,[c9Grt0XYkZ(jhISHLHVn7); c9Grt0XYkZ(MHtEGnVgFV)], [jlKtAnUR42(jhISHLHVn7); jlKtAnUR42(MHtEGnVgFV)], -yKemFy7uy5, bIAxIDEkU8, 2*yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
BNTQtxGdOt = 2;
edit = [1:(jhISHLHVn7-1) (jhISHLHVn7+1):(MHtEGnVgFV-1) (MHtEGnVgFV+1):uqU4tROcTv];
c9Grt0XYkZ = [c9Grt0XYkZ(jhISHLHVn7); c9Grt0XYkZ(MHtEGnVgFV); c9Grt0XYkZ(edit)];
jlKtAnUR42 = [jlKtAnUR42(jhISHLHVn7); jlKtAnUR42(MHtEGnVgFV); jlKtAnUR42(edit)];
break
else
end
end
if BNTQtxGdOt < 2
continue
end
for wXXau6oiF0 = 3:uqU4tROcTv
[yhLClLU0dr eLi2ZHUBQN] = find(B == -yKemFy7uy5);
AQvfWNpLn_ = size(yhLClLU0dr,1);
MLRRrODFak =  AQvfWNpLn_ * (uqU4tROcTv - BNTQtxGdOt);
dist = zeros(MLRRrODFak,3);
H0ipQkJFJy = 0;
for jhISHLHVn7 = 1:AQvfWNpLn_
for MHtEGnVgFV = (BNTQtxGdOt+1):uqU4tROcTv
H0ipQkJFJy = H0ipQkJFJy + 1;
dist(H0ipQkJFJy,1) = jhISHLHVn7;
dist(H0ipQkJFJy,2) = MHtEGnVgFV;
dist(H0ipQkJFJy,3) = abs(yhLClLU0dr(jhISHLHVn7)-c9Grt0XYkZ(MHtEGnVgFV)) + abs(eLi2ZHUBQN(jhISHLHVn7)-jlKtAnUR42(MHtEGnVgFV));
end
end
[gwRSVDoOYi pIin1Zd1bI] = sort(dist(:,3));
dist = dist(pIin1Zd1bI,:);
tIPYStgOUJ = false;
for H0ipQkJFJy = 1:MLRRrODFak
if dist(H0ipQkJFJy,3) > bIAxIDEkU8+1
break
end
jhISHLHVn7 = dist(H0ipQkJFJy,1);
MHtEGnVgFV = dist(H0ipQkJFJy,2);
path = vnBzAS_E0r(B,[yhLClLU0dr(jhISHLHVn7); c9Grt0XYkZ(MHtEGnVgFV)], [eLi2ZHUBQN(jhISHLHVn7); jlKtAnUR42(MHtEGnVgFV)], -yKemFy7uy5, bIAxIDEkU8, yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
BNTQtxGdOt = BNTQtxGdOt + 1;
tIPYStgOUJ = true;
c9Grt0XYkZ([wXXau6oiF0 MHtEGnVgFV]) = c9Grt0XYkZ([MHtEGnVgFV wXXau6oiF0]);
jlKtAnUR42([wXXau6oiF0 MHtEGnVgFV]) = jlKtAnUR42([MHtEGnVgFV wXXau6oiF0]);
break
end
end
if ~tIPYStgOUJ
break
end
end
end
end
end
function [W B] = ZPyyowP7k4(iLN9d6_2yH,B,W,t161DzmNiH,cJLW3dBcCD,ciAu_E5fzM)
function nH7vsdATrQ()
for L_m9gExiTd = 1:size(path,1);
if path(L_m9gExiTd,1) == path(L_m9gExiTd,3)
rs9HH0Qi4X(path(L_m9gExiTd,1),path(L_m9gExiTd,2)) = false;
rs9HH0Qi4X(path(L_m9gExiTd,3),path(L_m9gExiTd,4)) = false;
if path(L_m9gExiTd,2) == path(L_m9gExiTd,4)
B(path(L_m9gExiTd,1),path(L_m9gExiTd,2)) = -9999;
end
end
if path(L_m9gExiTd,2) == path(L_m9gExiTd,4)
pa3e1ePVfC(path(L_m9gExiTd,1),path(L_m9gExiTd,2)) = false;
pa3e1ePVfC(path(L_m9gExiTd,3),path(L_m9gExiTd,4)) = false;
end
end
end
[rs9HH0Qi4X pa3e1ePVfC] = WwwIzcdv6m(iLN9d6_2yH,B,W);
[Fvx88O464V R0qjsCiqpH] = H8Ok0XOzvD(B,ciAu_E5fzM);
if R0qjsCiqpH < 1, return, end
Fvx88O464V=sortrows(Fvx88O464V,-ciAu_E5fzM);
for aJAyGSFRIL = 1:R0qjsCiqpH
yKemFy7uy5 = Fvx88O464V(aJAyGSFRIL,1);
AQvfWNpLn_ = sum(B == -yKemFy7uy5);
if AQvfWNpLn_ == 0
if Fvx88O464V(aJAyGSFRIL,2) >= 2
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
uqU4tROcTv = size(c9Grt0XYkZ,1);
MLRRrODFak = uqU4tROcTv*(uqU4tROcTv-1)*.5;
dist = zeros(MLRRrODFak,3);
H0ipQkJFJy = 0;
for jhISHLHVn7 = 1:uqU4tROcTv
for MHtEGnVgFV = (jhISHLHVn7+1):uqU4tROcTv
H0ipQkJFJy = H0ipQkJFJy + 1;
dist(H0ipQkJFJy,1) = jhISHLHVn7;
dist(H0ipQkJFJy,2) = MHtEGnVgFV;
dist(H0ipQkJFJy,3) = abs(c9Grt0XYkZ(jhISHLHVn7)-c9Grt0XYkZ(MHtEGnVgFV)) + abs(jlKtAnUR42(jhISHLHVn7)-jlKtAnUR42(MHtEGnVgFV));
end
end
[gwRSVDoOYi pIin1Zd1bI] = sort(dist(:,3));
dist = dist(pIin1Zd1bI,:);
maxstep = min((t161DzmNiH*25)+cJLW3dBcCD,2*yKemFy7uy5+1);
tIPYStgOUJ = false;
for H0ipQkJFJy = 1:MLRRrODFak
if dist(H0ipQkJFJy,3) > maxstep+1
break
end
jhISHLHVn7 = dist(H0ipQkJFJy,1);
MHtEGnVgFV = dist(H0ipQkJFJy,2);
path = ZgJgZ4k4NR(B,rs9HH0Qi4X,pa3e1ePVfC,[c9Grt0XYkZ(jhISHLHVn7); c9Grt0XYkZ(MHtEGnVgFV)], [jlKtAnUR42(jhISHLHVn7); jlKtAnUR42(MHtEGnVgFV)], -yKemFy7uy5, t161DzmNiH, cJLW3dBcCD, ceil(1.85*yKemFy7uy5));
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
nH7vsdATrQ();
tIPYStgOUJ = true;
break
end
end
if ~tIPYStgOUJ
continue
end
end
end
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
IZ6JPpuO7F = size(c9Grt0XYkZ,1);
maxstep = min((t161DzmNiH*25)+cJLW3dBcCD,yKemFy7uy5+1);
for wXXau6oiF0 = 1:IZ6JPpuO7F
[yhLClLU0dr eLi2ZHUBQN] = find(B == -yKemFy7uy5);
AQvfWNpLn_ = size(yhLClLU0dr,1);
MLRRrODFak =  AQvfWNpLn_ * (IZ6JPpuO7F-wXXau6oiF0+1);
dist = zeros(MLRRrODFak,3);
H0ipQkJFJy = 0;
for jhISHLHVn7 = 1:AQvfWNpLn_
for MHtEGnVgFV = wXXau6oiF0:IZ6JPpuO7F
H0ipQkJFJy = H0ipQkJFJy + 1;
dist(H0ipQkJFJy,1) = jhISHLHVn7;
dist(H0ipQkJFJy,2) = MHtEGnVgFV;
dist(H0ipQkJFJy,3) = abs(yhLClLU0dr(jhISHLHVn7)-c9Grt0XYkZ(MHtEGnVgFV)) + abs(eLi2ZHUBQN(jhISHLHVn7)-jlKtAnUR42(MHtEGnVgFV));
end
end
[gwRSVDoOYi pIin1Zd1bI] = sort(dist(:,3));
dist = dist(pIin1Zd1bI,:);
tIPYStgOUJ = false;
for H0ipQkJFJy = 1:MLRRrODFak
if dist(H0ipQkJFJy,3) > maxstep+1
break
end
jhISHLHVn7 = dist(H0ipQkJFJy,1);
MHtEGnVgFV = dist(H0ipQkJFJy,2);
path = ZgJgZ4k4NR(B,rs9HH0Qi4X,pa3e1ePVfC,[yhLClLU0dr(jhISHLHVn7); c9Grt0XYkZ(MHtEGnVgFV)], [eLi2ZHUBQN(jhISHLHVn7); jlKtAnUR42(MHtEGnVgFV)], -yKemFy7uy5, t161DzmNiH, cJLW3dBcCD, yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
nH7vsdATrQ();
tIPYStgOUJ = true;
c9Grt0XYkZ([wXXau6oiF0 MHtEGnVgFV]) = c9Grt0XYkZ([MHtEGnVgFV wXXau6oiF0]);
jlKtAnUR42([wXXau6oiF0 MHtEGnVgFV]) = jlKtAnUR42([MHtEGnVgFV wXXau6oiF0]);
break
end
end
if ~tIPYStgOUJ
break
end
end
end
end
function [W B] = p1O4Fka8NB(B,W,cJLW3dBcCD,ciAu_E5fzM)
[Fvx88O464V R0qjsCiqpH] = H8Ok0XOzvD(B,ciAu_E5fzM);
if R0qjsCiqpH < 1, return, end
Fvx88O464V=sortrows(Fvx88O464V,-ciAu_E5fzM);
for aJAyGSFRIL = 1:R0qjsCiqpH
yKemFy7uy5 = Fvx88O464V(aJAyGSFRIL,1);
AQvfWNpLn_ = sum(B == -yKemFy7uy5);
if AQvfWNpLn_ == 0
if Fvx88O464V(aJAyGSFRIL,2) >= 2
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
uqU4tROcTv = size(c9Grt0XYkZ,1);
MLRRrODFak = uqU4tROcTv*(uqU4tROcTv-1)*.5;
dist = zeros(MLRRrODFak,3);
H0ipQkJFJy = 0;
for jhISHLHVn7 = 1:uqU4tROcTv
for MHtEGnVgFV = (jhISHLHVn7+1):uqU4tROcTv
H0ipQkJFJy = H0ipQkJFJy + 1;
dist(H0ipQkJFJy,1) = jhISHLHVn7;
dist(H0ipQkJFJy,2) = MHtEGnVgFV;
dist(H0ipQkJFJy,3) = abs(c9Grt0XYkZ(jhISHLHVn7)-c9Grt0XYkZ(MHtEGnVgFV)) + abs(jlKtAnUR42(jhISHLHVn7)-jlKtAnUR42(MHtEGnVgFV));
end
end
[gwRSVDoOYi pIin1Zd1bI] = sort(dist(:,3));
dist = dist(pIin1Zd1bI,:);
maxstep = min(cJLW3dBcCD,2*yKemFy7uy5+1);
tIPYStgOUJ = false;
for H0ipQkJFJy = 1:MLRRrODFak
if dist(H0ipQkJFJy,3) > maxstep+1
break
end
jhISHLHVn7 = dist(H0ipQkJFJy,1);
MHtEGnVgFV = dist(H0ipQkJFJy,2);
path = vnBzAS_E0r(B,[c9Grt0XYkZ(jhISHLHVn7); c9Grt0XYkZ(MHtEGnVgFV)], [jlKtAnUR42(jhISHLHVn7); jlKtAnUR42(MHtEGnVgFV)], -yKemFy7uy5, cJLW3dBcCD, 2*yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
tIPYStgOUJ = true;
break
end
end
if ~tIPYStgOUJ
continue
end
end
end
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
IZ6JPpuO7F = size(c9Grt0XYkZ,1);
maxstep = min(cJLW3dBcCD,yKemFy7uy5+1);
for wXXau6oiF0 = 1:IZ6JPpuO7F
[yhLClLU0dr eLi2ZHUBQN] = find(B == -yKemFy7uy5);
AQvfWNpLn_ = size(yhLClLU0dr,1);
MLRRrODFak =  AQvfWNpLn_ * (IZ6JPpuO7F-wXXau6oiF0+1);
dist = zeros(MLRRrODFak,3);
H0ipQkJFJy = 0;
for jhISHLHVn7 = 1:AQvfWNpLn_
for MHtEGnVgFV = wXXau6oiF0:IZ6JPpuO7F
H0ipQkJFJy = H0ipQkJFJy + 1;
dist(H0ipQkJFJy,1) = jhISHLHVn7;
dist(H0ipQkJFJy,2) = MHtEGnVgFV;
dist(H0ipQkJFJy,3) = abs(yhLClLU0dr(jhISHLHVn7)-c9Grt0XYkZ(MHtEGnVgFV)) + abs(eLi2ZHUBQN(jhISHLHVn7)-jlKtAnUR42(MHtEGnVgFV));
end
end
[gwRSVDoOYi pIin1Zd1bI] = sort(dist(:,3));
dist = dist(pIin1Zd1bI,:);
tIPYStgOUJ = false;
for H0ipQkJFJy = 1:MLRRrODFak
if dist(H0ipQkJFJy,3) > maxstep+1
break
end
jhISHLHVn7 = dist(H0ipQkJFJy,1);
MHtEGnVgFV = dist(H0ipQkJFJy,2);
path = vnBzAS_E0r(B,[yhLClLU0dr(jhISHLHVn7); c9Grt0XYkZ(MHtEGnVgFV)], [eLi2ZHUBQN(jhISHLHVn7); jlKtAnUR42(MHtEGnVgFV)], -yKemFy7uy5, cJLW3dBcCD, 2*yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
tIPYStgOUJ = true;
c9Grt0XYkZ([wXXau6oiF0 MHtEGnVgFV]) = c9Grt0XYkZ([MHtEGnVgFV wXXau6oiF0]);
jlKtAnUR42([wXXau6oiF0 MHtEGnVgFV]) = jlKtAnUR42([MHtEGnVgFV wXXau6oiF0]);
break
end
end
if ~tIPYStgOUJ
break
end
end
end
end
function [rs9HH0Qi4X pa3e1ePVfC] = WwwIzcdv6m(iLN9d6_2yH,B,path)
[snbtJPPQXO KI9lREpYOt] = size(B);
rs9HH0Qi4X = iLN9d6_2yH == 0;
pa3e1ePVfC = rs9HH0Qi4X;
rs9HH0Qi4X(:,[1 KI9lREpYOt]) = false;
pa3e1ePVfC([1 snbtJPPQXO],:) = false;
for aJAyGSFRIL = 1:size(path,1)
if path(aJAyGSFRIL,1) == path(aJAyGSFRIL,3)
rs9HH0Qi4X(path(aJAyGSFRIL,1),path(aJAyGSFRIL,2)) = false;
rs9HH0Qi4X(path(aJAyGSFRIL,3),path(aJAyGSFRIL,4)) = false;
end
if path(aJAyGSFRIL,2) == path(aJAyGSFRIL,4)
pa3e1ePVfC(path(aJAyGSFRIL,1),path(aJAyGSFRIL,2)) = false;
pa3e1ePVfC(path(aJAyGSFRIL,3),path(aJAyGSFRIL,4)) = false;
end
end
end
function B = WpiEQbyVus(B,path,mhEXNSGwWv)
B(path(1,1),path(1,2)) = mhEXNSGwWv;
for aJAyGSFRIL = 1:size(path,1);
B(path(aJAyGSFRIL,3),path(aJAyGSFRIL,4)) = mhEXNSGwWv;
end
end
function path = zW0wPmSCPw(oavf166Pr8,P35xBUkw9j,snbtJPPQXO,sYKKuyTCtf)
path = zeros(sYKKuyTCtf,4);
Cbof_JNn8r = mod(oavf166Pr8,snbtJPPQXO);
n1SgfnKkWD = ceil(oavf166Pr8/snbtJPPQXO);
for wXXau6oiF0 = 1:sYKKuyTCtf
path(wXXau6oiF0,1:2) = [Cbof_JNn8r n1SgfnKkWD];
oavf166Pr8 = P35xBUkw9j(oavf166Pr8);
Cbof_JNn8r = mod(oavf166Pr8,snbtJPPQXO);
n1SgfnKkWD = ceil(oavf166Pr8/snbtJPPQXO);
path(wXXau6oiF0,3:4) = [Cbof_JNn8r n1SgfnKkWD];
end
end
function path = vnBzAS_E0r(B,c9Grt0XYkZ,jlKtAnUR42,mhEXNSGwWv,bIAxIDEkU8,qoe7ITi0mN)
[snbtJPPQXO KI9lREpYOt] = size(B);
P35xBUkw9j = zeros(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y = -ones(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y(c9Grt0XYkZ(2),jlKtAnUR42(2)) = 0;
JIcPX5aY0Y(c9Grt0XYkZ(1),jlKtAnUR42(1)) = -2;
JIcPX5aY0Y( B == mhEXNSGwWv ) = -2;
G6lAESrp0H = zeros(snbtJPPQXO*KI9lREpYOt,1);
G6lAESrp0H(1) = c9Grt0XYkZ(2) + (jlKtAnUR42(2)-1)*snbtJPPQXO;
count = 1;
U6hzNqa_3Z = [-1 1 -snbtJPPQXO snbtJPPQXO];
fpF3Vsa2zp = randperm(4);
for step = 0:min(bIAxIDEkU8,qoe7ITi0mN)
if count < 1, break, end
uqU4tROcTv = count;
oavf166Pr8 = G6lAESrp0H;
count = 0;
for aJAyGSFRIL = 1:uqU4tROcTv
EZEJFTNB3q = oavf166Pr8(aJAyGSFRIL);
for fG7sYZdSeu=1:4
qPZgIP7j1W = EZEJFTNB3q + U6hzNqa_3Z(fpF3Vsa2zp(fG7sYZdSeu));
bOGC8L4qGu = JIcPX5aY0Y(qPZgIP7j1W);
if bOGC8L4qGu == -2
P35xBUkw9j(qPZgIP7j1W) = EZEJFTNB3q;
path = zW0wPmSCPw(qPZgIP7j1W,P35xBUkw9j,snbtJPPQXO,step+1);
return
elseif bOGC8L4qGu == -1 && B(qPZgIP7j1W) == 0
JIcPX5aY0Y(qPZgIP7j1W) = step+1;
P35xBUkw9j(qPZgIP7j1W) = EZEJFTNB3q;
count = count + 1;
G6lAESrp0H(count) = qPZgIP7j1W;
end
end
end
end
path = [];
end
function path = ZgJgZ4k4NR(B,rs9HH0Qi4X,pa3e1ePVfC,c9Grt0XYkZ,jlKtAnUR42,mhEXNSGwWv,t161DzmNiH,cJLW3dBcCD,qoe7ITi0mN)
[snbtJPPQXO KI9lREpYOt] = size(B);
I2EnrtBSAm = false(snbtJPPQXO,KI9lREpYOt);
P35xBUkw9j = zeros(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y = -ones(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y(c9Grt0XYkZ(1),jlKtAnUR42(1)) = -2;
JIcPX5aY0Y( B == mhEXNSGwWv ) = -2;
maxstep = min((t161DzmNiH*27)+cJLW3dBcCD,qoe7ITi0mN+1);
gBWqfofzah = zeros(maxstep+28,1);
gBWqfofzah(1) = c9Grt0XYkZ(2) + (jlKtAnUR42(2)-1)*snbtJPPQXO;
U6hzNqa_3Z = [-snbtJPPQXO snbtJPPQXO -1 1];
for step = 1:maxstep
while gBWqfofzah(step)>0
EZEJFTNB3q = gBWqfofzah(step);
gBWqfofzah(step)=JIcPX5aY0Y(EZEJFTNB3q);
for fG7sYZdSeu = 1:4
qPZgIP7j1W = EZEJFTNB3q + U6hzNqa_3Z(fG7sYZdSeu);
bOGC8L4qGu = JIcPX5aY0Y(qPZgIP7j1W);
if bOGC8L4qGu==-1
if B(qPZgIP7j1W) == 0
JIcPX5aY0Y(qPZgIP7j1W) = gBWqfofzah(step+1);
gBWqfofzah(step+1) = qPZgIP7j1W;
P35xBUkw9j(qPZgIP7j1W) = EZEJFTNB3q;
elseif (rs9HH0Qi4X(qPZgIP7j1W)&&(fG7sYZdSeu<3)) || (pa3e1ePVfC(qPZgIP7j1W)&&(fG7sYZdSeu>2))
JIcPX5aY0Y(qPZgIP7j1W) = gBWqfofzah(step+26);
gBWqfofzah(step+26) = qPZgIP7j1W;
P35xBUkw9j(qPZgIP7j1W) = EZEJFTNB3q;
I2EnrtBSAm(qPZgIP7j1W) = true;
end
end
if bOGC8L4qGu==-2
step=step+1;
P35xBUkw9j(qPZgIP7j1W) = EZEJFTNB3q;
Cbof_JNn8r=mod(qPZgIP7j1W,snbtJPPQXO);
n1SgfnKkWD=ceil(qPZgIP7j1W/snbtJPPQXO);
path = zeros(step,4);
wXXau6oiF0 = 0;
while Cbof_JNn8r ~= c9Grt0XYkZ(2) || n1SgfnKkWD ~= jlKtAnUR42(2)
wXXau6oiF0 = wXXau6oiF0 + 1;
path(wXXau6oiF0,1:2) = [Cbof_JNn8r n1SgfnKkWD];
qPZgIP7j1W = Cbof_JNn8r + (n1SgfnKkWD-1)*snbtJPPQXO;
DWyIb8ygMZ = P35xBUkw9j(qPZgIP7j1W);
CHnvDAevFA=mod(DWyIb8ygMZ,snbtJPPQXO);
Dak_99KAHd=ceil(DWyIb8ygMZ/snbtJPPQXO);
path(wXXau6oiF0,3:4) = [CHnvDAevFA Dak_99KAHd];
Cbof_JNn8r = CHnvDAevFA;
n1SgfnKkWD = Dak_99KAHd;
if I2EnrtBSAm(Cbof_JNn8r,n1SgfnKkWD)
wXXau6oiF0 = wXXau6oiF0 + 1;
path(wXXau6oiF0,:) = [Cbof_JNn8r n1SgfnKkWD Cbof_JNn8r n1SgfnKkWD];
end
end
path = path(1:wXXau6oiF0,:);
return
end
end
end
end
path = [];
end
function W = uMjpjbn9Fy(B)
[W,Sxh3DJMk_q] = fj3RPj_bVm(B);
B3rt4YBR8K = 0;
OJxSzmTVgy = round(mod(B(:),2));
if Sxh3DJMk_q < 2100
return
end
[iV0Evt4IQ2,w1VSn2Mpnj] = size(B);
B = flipud(fliplr(B'));
[rSGpHjPVmN,s7rFbJZP3d] = fj3RPj_bVm(B);
if Sxh3DJMk_q > s7rFbJZP3d
W = [iV0Evt4IQ2-rSGpHjPVmN(:,2)+1 w1VSn2Mpnj-rSGpHjPVmN(:,1)+1 iV0Evt4IQ2-rSGpHjPVmN(:,4)+1 w1VSn2Mpnj-rSGpHjPVmN(:,3)+1];
end
if OJxSzmTVgy~=B3rt4YBR8K;        W = zeros(0,4);    end
end
function [W,Sxh3DJMk_q] = fj3RPj_bVm(B)
[KXdVbEcIL7,cd1HKQllly]=size(B);
ok6W3Osvo7=nan(KXdVbEcIL7+2,cd1HKQllly+2);
ok6W3Osvo7(2:end-1,2:end-1)=B;
y2eGN3gKLV = ok6W3Osvo7;
t161DzmNiH = 4;
if size(y2eGN3gKLV,2) > 20
MW1b3mMafN = 4;
H3jbdugMMG = 8;
bIAxIDEkU8 = 12;
else
MW1b3mMafN = 3;
H3jbdugMMG = 7;
bIAxIDEkU8 = 11;
end
Sxh3DJMk_q = inf;
ceoBxnrfJH = [1 2;2 1];
QWyeGqqOR6 = [1 3;3 1];
h0xtVgxWCw = [3 2 1;1 2 3];
for H0ipQkJFJy = 1:2
if H0ipQkJFJy == 2
[Imsw0in2zJ beAN4hMNnq] = uAMeAVxzHZ(y2eGN3gKLV,MW1b3mMafN,ceoBxnrfJH(H0ipQkJFJy,:));
[eOIkkTwkxt vUQ6c0W10R] = LxpLUAfZmz(beAN4hMNnq,Imsw0in2zJ,H3jbdugMMG,QWyeGqqOR6(H0ipQkJFJy,:));
[m5nLA43u5k vmtTy9p__0] = LxpLUAfZmz(vUQ6c0W10R,eOIkkTwkxt,bIAxIDEkU8,QWyeGqqOR6(H0ipQkJFJy,:));
else
[Imsw0in2zJ beAN4hMNnq] = uAMeAVxzHZ(y2eGN3gKLV,4,ceoBxnrfJH(H0ipQkJFJy,:));
[m5nLA43u5k vmtTy9p__0] = LxpLUAfZmz(beAN4hMNnq,Imsw0in2zJ,11,QWyeGqqOR6(H0ipQkJFJy,:));
end
for XTKDyHdmZ4 = 1:2
if H0ipQkJFJy == 2 && XTKDyHdmZ4 == 2 && Sxh3DJMk_q > 2100, return, end
QgIYgcImFF = bGuqGfpzp3(y2eGN3gKLV,vmtTy9p__0,m5nLA43u5k,t161DzmNiH,bIAxIDEkU8,h0xtVgxWCw(XTKDyHdmZ4,:))-1;
OzT_9PG3qE = MLUbJVBPKf(B,QgIYgcImFF);
if OzT_9PG3qE <= Sxh3DJMk_q
Sxh3DJMk_q = OzT_9PG3qE;
W = QgIYgcImFF;
t161DzmNiH = t161DzmNiH - 1;
end
end
end
if KXdVbEcIL7*cd1HKQllly > 290; return; end
MllUMGaYoB = sum(W(:,1)==W(:,3)&W(:,2)==W(:,4));
if MllUMGaYoB <= 4
qVvmVmkbph = xfihwNI6xp(B);
M5kecFFoPr = MLUbJVBPKf(B,qVvmVmkbph);
if M5kecFFoPr < Sxh3DJMk_q
W = qVvmVmkbph;
Sxh3DJMk_q = M5kecFFoPr;
end
end
end
function path = N7f2A7jZqV(B,c9Grt0XYkZ,jlKtAnUR42,mhEXNSGwWv,bIAxIDEkU8,qoe7ITi0mN)
function path = Gp4VtWd2Aq(z7G1UmGoQL,tX3l0oRykF,wj9BQ8iAIz)
sOUB0PyazU(z7G1UmGoQL,tX3l0oRykF) = VDisk3ZfO5(aJAyGSFRIL);
R1sOiJUNng(z7G1UmGoQL,tX3l0oRykF) = nhR2L5nirU(aJAyGSFRIL);
path = zeros(wj9BQ8iAIz,4);
for htO5RcX1HH = 1:wj9BQ8iAIz
path(htO5RcX1HH,1:2) = [z7G1UmGoQL tX3l0oRykF];
jEoQq_F_hS = sOUB0PyazU(z7G1UmGoQL,tX3l0oRykF);
ejGR2oOWL7 = R1sOiJUNng(z7G1UmGoQL,tX3l0oRykF);
path(htO5RcX1HH,3:4) = [jEoQq_F_hS ejGR2oOWL7];
z7G1UmGoQL = jEoQq_F_hS;
tX3l0oRykF = ejGR2oOWL7;
end
end
[snbtJPPQXO KI9lREpYOt] = size(B);
sOUB0PyazU = zeros(snbtJPPQXO,KI9lREpYOt);
R1sOiJUNng = zeros(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y = -ones(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y(c9Grt0XYkZ(2),jlKtAnUR42(2)) = 0;
JIcPX5aY0Y(c9Grt0XYkZ(1),jlKtAnUR42(1)) = -2;
JIcPX5aY0Y( B == mhEXNSGwWv ) = -2;
XR88g8a3ya = zeros(snbtJPPQXO*KI9lREpYOt,1);
joe81t5UsP = zeros(snbtJPPQXO*KI9lREpYOt,1);
count = 1;
XR88g8a3ya(1) = c9Grt0XYkZ(2);
joe81t5UsP(1) = jlKtAnUR42(2);
HoyXoHJCuE=[-1 1 0 0];
MvWwsMWzpl=[0 0 -1 1];
for step = 0:min(bIAxIDEkU8,qoe7ITi0mN)
if count < 1, break, end
uqU4tROcTv = count;
VDisk3ZfO5 = XR88g8a3ya(1:uqU4tROcTv);
nhR2L5nirU = joe81t5UsP(1:uqU4tROcTv);
count = 0;
for aJAyGSFRIL = 1:uqU4tROcTv
gYTSU__Rrl = nhR2L5nirU(aJAyGSFRIL);
EZEJFTNB3q = VDisk3ZfO5(aJAyGSFRIL);
for fG7sYZdSeu=1:4
z7G1UmGoQL = EZEJFTNB3q + HoyXoHJCuE(fG7sYZdSeu);
tX3l0oRykF = gYTSU__Rrl + MvWwsMWzpl(fG7sYZdSeu);
qPZgIP7j1W = z7G1UmGoQL + (tX3l0oRykF-1)*snbtJPPQXO;
bOGC8L4qGu = JIcPX5aY0Y(qPZgIP7j1W);
if bOGC8L4qGu == -2
path = Gp4VtWd2Aq(z7G1UmGoQL,tX3l0oRykF,step+1);
return
elseif bOGC8L4qGu == -1 && B(qPZgIP7j1W) == 0
JIcPX5aY0Y(qPZgIP7j1W) = step+1;
sOUB0PyazU(qPZgIP7j1W) = EZEJFTNB3q;
R1sOiJUNng(qPZgIP7j1W) = gYTSU__Rrl;
count = count + 1; XR88g8a3ya(count) = z7G1UmGoQL; joe81t5UsP(count) = tX3l0oRykF;
end
end
end
end
path = [];
end
function L_m9gExiTd = xfihwNI6xp(MHtEGnVgFV)
yKemFy7uy5 = unique(MHtEGnVgFV);
yKemFy7uy5(1) = [];
oALsD6F801 = zeros(size(yKemFy7uy5));
for aJAyGSFRIL = 1:length(oALsD6F801)
oALsD6F801(aJAyGSFRIL) = nnz(yKemFy7uy5(aJAyGSFRIL) == MHtEGnVgFV(:));
end
for aJAyGSFRIL = 1:length(oALsD6F801)
if oALsD6F801(aJAyGSFRIL) == 1
MHtEGnVgFV(yKemFy7uy5(aJAyGSFRIL) == MHtEGnVgFV(:)) = -1;
end
end
wgfUtXiN6D = zeros(size(MHtEGnVgFV)+2);
fNtMN8V8hz = repmat(-1,size(wgfUtXiN6D));
fNtMN8V8hz(2:end-1,2:end-1) = MHtEGnVgFV;
L_m9gExiTd = [];
[gPzXf9zfzP, IoyIvAb4D9] = find(fNtMN8V8hz>0);
gwRSVDoOYi = (size(fNtMN8V8hz,1)/2+0.5 - gPzXf9zfzP).^2 + (size(fNtMN8V8hz,2)/2+0.5 - IoyIvAb4D9).^2;
[gwRSVDoOYi, order] = sort(gwRSVDoOYi);
order = order';
for R0qjsCiqpH = 1:length(gPzXf9zfzP)-1
CSkN5aV52M = 0;
Lwb0Phrsrf = 32;
for aJAyGSFRIL = order
if wgfUtXiN6D(gPzXf9zfzP(aJAyGSFRIL), IoyIvAb4D9(aJAyGSFRIL))
continue
end
[SCG_TlN1bz, b0zaHTM8Jy, nodI3ZfbRR] = jP71aG32Og(fNtMN8V8hz, wgfUtXiN6D, gPzXf9zfzP(aJAyGSFRIL), IoyIvAb4D9(aJAyGSFRIL), Lwb0Phrsrf);
if SCG_TlN1bz > CSkN5aV52M
CSkN5aV52M = SCG_TlN1bz;
oyPpBlj49X = b0zaHTM8Jy;
Lwb0Phrsrf = nodI3ZfbRR;
if Lwb0Phrsrf == 1
break
end
end
end
if CSkN5aV52M == 0
L_m9gExiTd = L_m9gExiTd - 1;
return
end
wgfUtXiN6D = WpiEQbyVus(wgfUtXiN6D, oyPpBlj49X, fNtMN8V8hz(oyPpBlj49X(1,1), oyPpBlj49X(1,2)));
fNtMN8V8hz = WpiEQbyVus(fNtMN8V8hz, oyPpBlj49X, fNtMN8V8hz(oyPpBlj49X(1,1), oyPpBlj49X(1,2)));
L_m9gExiTd = [L_m9gExiTd; oyPpBlj49X];
end
L_m9gExiTd = L_m9gExiTd - 1;
end
function [CSkN5aV52M, oyPpBlj49X, Lwb0Phrsrf] = jP71aG32Og(MHtEGnVgFV, wgfUtXiN6D, oavf166Pr8, nhR2L5nirU, axrakjyJM3)
CSkN5aV52M = 0;
oyPpBlj49X = [];
htO5RcX1HH = [1 -1 0 0];
R0qjsCiqpH = [0 0 1 -1];
if ~any(wgfUtXiN6D(:)==MHtEGnVgFV(oavf166Pr8,nhR2L5nirU))
wgfUtXiN6D = MHtEGnVgFV;
end
fNtMN8V8hz = MHtEGnVgFV;
fNtMN8V8hz(fNtMN8V8hz>0) = -1;
fNtMN8V8hz(oavf166Pr8,nhR2L5nirU) = 1;
Lwb0Phrsrf = Inf;
yKemFy7uy5 = MHtEGnVgFV(oavf166Pr8,nhR2L5nirU);
for aJAyGSFRIL = 1:axrakjyJM3-2
[gPzXf9zfzP, IoyIvAb4D9] = find(fNtMN8V8hz==aJAyGSFRIL);
for oALsD6F801 = 1:length(gPzXf9zfzP)
for AteVJUXrYq = 1:4
pK43STZ6Do = gPzXf9zfzP(oALsD6F801) + htO5RcX1HH(AteVJUXrYq);
MB6ybfAUJV = IoyIvAb4D9(oALsD6F801) + R0qjsCiqpH(AteVJUXrYq);
if wgfUtXiN6D(pK43STZ6Do,MB6ybfAUJV) == yKemFy7uy5 && ~(pK43STZ6Do == oavf166Pr8 && MB6ybfAUJV == nhR2L5nirU)
Lwb0Phrsrf = aJAyGSFRIL;
break
end
DShATANGDO = fNtMN8V8hz(pK43STZ6Do,MB6ybfAUJV);
if DShATANGDO == 0
fNtMN8V8hz(pK43STZ6Do,MB6ybfAUJV) = aJAyGSFRIL+1;
end
end
if Lwb0Phrsrf < Inf
break
end
end
if Lwb0Phrsrf < Inf
break
end
end
if Lwb0Phrsrf == Inf
return
end
CSkN5aV52M = MHtEGnVgFV(oavf166Pr8,nhR2L5nirU) - Lwb0Phrsrf;
if Lwb0Phrsrf == 1
oyPpBlj49X = [oavf166Pr8, nhR2L5nirU, pK43STZ6Do, MB6ybfAUJV];
return
end
oyPpBlj49X = zeros(Lwb0Phrsrf,4);
for step = Lwb0Phrsrf:-1:1
for AteVJUXrYq = 1:4
pDFPLUBaTZ = pK43STZ6Do + htO5RcX1HH(AteVJUXrYq);
NfAxFPmWnH = MB6ybfAUJV + R0qjsCiqpH(AteVJUXrYq);
if fNtMN8V8hz(pDFPLUBaTZ, NfAxFPmWnH) == step
break
end
end
oyPpBlj49X(step,:) = [pDFPLUBaTZ, NfAxFPmWnH, pK43STZ6Do, MB6ybfAUJV];
pK43STZ6Do = pDFPLUBaTZ;
MB6ybfAUJV = NfAxFPmWnH;
end
end
function [W B] = uAMeAVxzHZ(B,bIAxIDEkU8,ciAu_E5fzM)
W = [];
[Fvx88O464V R0qjsCiqpH] = H8Ok0XOzvD(B,ciAu_E5fzM);
if R0qjsCiqpH < 1
return
end
Fvx88O464V=sortrows(Fvx88O464V,-ciAu_E5fzM);
for aJAyGSFRIL = 1:R0qjsCiqpH
if Fvx88O464V(aJAyGSFRIL,2) >= 2
yKemFy7uy5 = Fvx88O464V(aJAyGSFRIL,1);
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
uqU4tROcTv = size(c9Grt0XYkZ,1);
MLRRrODFak = uqU4tROcTv*(uqU4tROcTv-1)/2;
dist = zeros(MLRRrODFak,3);
H0ipQkJFJy = 0;
for jhISHLHVn7 = 1:uqU4tROcTv
for MHtEGnVgFV = (jhISHLHVn7+1):uqU4tROcTv
H0ipQkJFJy = H0ipQkJFJy + 1;
dist(H0ipQkJFJy,1) = jhISHLHVn7;
dist(H0ipQkJFJy,2) = MHtEGnVgFV;
dist(H0ipQkJFJy,3) = abs(c9Grt0XYkZ(jhISHLHVn7)-c9Grt0XYkZ(MHtEGnVgFV)) + abs(jlKtAnUR42(jhISHLHVn7)-jlKtAnUR42(MHtEGnVgFV));
end
end
[gwRSVDoOYi pIin1Zd1bI] = sort(dist(:,3));
dist = dist(pIin1Zd1bI,:);
T7HRKZBDLO = reshape(dist(:,1:2)',[],1);
BNTQtxGdOt = 0;
b0BVCiOGil = 1;
N_vJnBWXNB = false(uqU4tROcTv,1);
for aJAyGSFRIL=1:uqU4tROcTv
UgEDL51_V_ = find( ~N_vJnBWXNB(T7HRKZBDLO(b0BVCiOGil:end)) , 1 , 'first');
if isempty(UgEDL51_V_)
break
end
jhISHLHVn7 = T7HRKZBDLO(UgEDL51_V_);
Distance = abs(c9Grt0XYkZ([1:jhISHLHVn7-1,jhISHLHVn7+1:end]')-c9Grt0XYkZ(jhISHLHVn7)) + abs(jlKtAnUR42([1:jhISHLHVn7-1,jhISHLHVn7+1:end]')-jlKtAnUR42(jhISHLHVn7));
if max(Distance)>bIAxIDEkU8-1
break
end
path = M3h0aZuqjb(B,c9Grt0XYkZ(jhISHLHVn7),jlKtAnUR42(jhISHLHVn7),c9Grt0XYkZ([1:jhISHLHVn7-1,jhISHLHVn7+1:end]'),jlKtAnUR42([1:jhISHLHVn7-1,jhISHLHVn7+1:end]'), -yKemFy7uy5, bIAxIDEkU8, 2*yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
BNTQtxGdOt = 2;
break
end
end
if BNTQtxGdOt < 2
continue
end
for htO5RcX1HH = 3:uqU4tROcTv
[yhLClLU0dr eLi2ZHUBQN] = find(B == -yKemFy7uy5);
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
[CDMaZTao1k,hUT4zOPQAT] = meshgrid(c9Grt0XYkZ,yhLClLU0dr);
[WYzGuyfX2b,gqkqkrRrFt] = meshgrid(c9Grt0XYkZ,yhLClLU0dr);
Distance = abs(CDMaZTao1k-hUT4zOPQAT) + abs(WYzGuyfX2b-gqkqkrRrFt);
if max(Distance(:))>bIAxIDEkU8-1
break
end
path = M3h0aZuqjb(B,yhLClLU0dr,eLi2ZHUBQN,c9Grt0XYkZ,jlKtAnUR42, -yKemFy7uy5, bIAxIDEkU8, 2*yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
tIPYStgOUJ = true;
else
break
end
end
end
end
end
function [W B] = LxpLUAfZmz(B,W,UD2HocmQWO,ciAu_E5fzM)
[Fvx88O464V R0qjsCiqpH] = H8Ok0XOzvD(B,ciAu_E5fzM);
if R0qjsCiqpH < 1, return, end
Fvx88O464V=sortrows(Fvx88O464V,-ciAu_E5fzM);
for aJAyGSFRIL = 1:R0qjsCiqpH
yKemFy7uy5 = Fvx88O464V(aJAyGSFRIL,1);
AQvfWNpLn_ = sum(B == -yKemFy7uy5);
if AQvfWNpLn_ == 0
if Fvx88O464V(aJAyGSFRIL,2) >= 2
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
uqU4tROcTv = size(c9Grt0XYkZ,1);
MLRRrODFak = uqU4tROcTv*(uqU4tROcTv-1)/2;
dist = zeros(MLRRrODFak,3);
H0ipQkJFJy = 0;
for jhISHLHVn7 = 1:uqU4tROcTv
for MHtEGnVgFV = (jhISHLHVn7+1):uqU4tROcTv
H0ipQkJFJy = H0ipQkJFJy + 1;
dist(H0ipQkJFJy,1) = jhISHLHVn7;
dist(H0ipQkJFJy,2) = MHtEGnVgFV;
dist(H0ipQkJFJy,3) = abs(c9Grt0XYkZ(jhISHLHVn7)-c9Grt0XYkZ(MHtEGnVgFV)) + abs(jlKtAnUR42(jhISHLHVn7)-jlKtAnUR42(MHtEGnVgFV));
end
end
[gwRSVDoOYi pIin1Zd1bI] = sort(dist(:,3));
dist = dist(pIin1Zd1bI,:);
maxstep = min(UD2HocmQWO,2*yKemFy7uy5+1);
tIPYStgOUJ = false;
for H0ipQkJFJy = 1:MLRRrODFak
if dist(H0ipQkJFJy,3) > maxstep+1
break
end
jhISHLHVn7 = dist(H0ipQkJFJy,1);
MHtEGnVgFV = dist(H0ipQkJFJy,2);
path = N7f2A7jZqV(B,[c9Grt0XYkZ(jhISHLHVn7); c9Grt0XYkZ(MHtEGnVgFV)], [jlKtAnUR42(jhISHLHVn7); jlKtAnUR42(MHtEGnVgFV)], -yKemFy7uy5, UD2HocmQWO, 2*yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
tIPYStgOUJ = true;
break
end
end
if ~tIPYStgOUJ
continue
end
end
end
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
EY_25EZAQ4 = size(c9Grt0XYkZ,1);
maxstep = min(UD2HocmQWO,yKemFy7uy5+1);
for htO5RcX1HH = 1:EY_25EZAQ4
[yhLClLU0dr eLi2ZHUBQN] = find(B == -yKemFy7uy5);
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
tIPYStgOUJ = false;
path = M3h0aZuqjb(B,yhLClLU0dr,eLi2ZHUBQN,c9Grt0XYkZ,jlKtAnUR42, -yKemFy7uy5, UD2HocmQWO, yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
tIPYStgOUJ = true;
end
if ~tIPYStgOUJ
break
end
end
end
end
function [W B] = bGuqGfpzp3(ok6W3Osvo7,B,W,t161DzmNiH,UD2HocmQWO,ciAu_E5fzM)
function jbt_rXhxZ9()
for L_m9gExiTd = 1:size(path,1);
if path(L_m9gExiTd,1) == path(L_m9gExiTd,3)
ewVHthm2c5(path(L_m9gExiTd,1),path(L_m9gExiTd,2)) = false;
ewVHthm2c5(path(L_m9gExiTd,3),path(L_m9gExiTd,4)) = false;
if path(L_m9gExiTd,2) == path(L_m9gExiTd,4)
B(path(L_m9gExiTd,1),path(L_m9gExiTd,2)) = -9999;
end
end
if path(L_m9gExiTd,2) == path(L_m9gExiTd,4)
YwkVDnmr9s(path(L_m9gExiTd,1),path(L_m9gExiTd,2)) = false;
YwkVDnmr9s(path(L_m9gExiTd,3),path(L_m9gExiTd,4)) = false;
end
end
end
[ewVHthm2c5 YwkVDnmr9s] = WwwIzcdv6m(ok6W3Osvo7,B,W);
[Fvx88O464V R0qjsCiqpH] = H8Ok0XOzvD(B,ciAu_E5fzM);
if R0qjsCiqpH < 1, return, end
Fvx88O464V=sortrows(Fvx88O464V,-ciAu_E5fzM);
for aJAyGSFRIL = 1:R0qjsCiqpH
yKemFy7uy5 = Fvx88O464V(aJAyGSFRIL,1);
AQvfWNpLn_ = sum(B == -yKemFy7uy5);
if AQvfWNpLn_ == 0
if Fvx88O464V(aJAyGSFRIL,2) >= 2
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
uqU4tROcTv = size(c9Grt0XYkZ,1);
MLRRrODFak = uqU4tROcTv*(uqU4tROcTv-1)/2;
dist = zeros(MLRRrODFak,3);
H0ipQkJFJy = 0;
for jhISHLHVn7 = 1:uqU4tROcTv
for MHtEGnVgFV = (jhISHLHVn7+1):uqU4tROcTv
H0ipQkJFJy = H0ipQkJFJy + 1;
dist(H0ipQkJFJy,1) = jhISHLHVn7;
dist(H0ipQkJFJy,2) = MHtEGnVgFV;
dist(H0ipQkJFJy,3) = abs(c9Grt0XYkZ(jhISHLHVn7)-c9Grt0XYkZ(MHtEGnVgFV)) + abs(jlKtAnUR42(jhISHLHVn7)-jlKtAnUR42(MHtEGnVgFV));
end
end
[gwRSVDoOYi pIin1Zd1bI] = sort(dist(:,3));
dist = dist(pIin1Zd1bI,:);
maxstep = min((t161DzmNiH*25)+UD2HocmQWO,2*yKemFy7uy5+1);
tIPYStgOUJ = false;
for H0ipQkJFJy = 1:MLRRrODFak
if dist(H0ipQkJFJy,3) > maxstep+1
break
end
jhISHLHVn7 = dist(H0ipQkJFJy,1);
MHtEGnVgFV = dist(H0ipQkJFJy,2);
path = ZgJgZ4k4NR(B,ewVHthm2c5,YwkVDnmr9s,[c9Grt0XYkZ(jhISHLHVn7); c9Grt0XYkZ(MHtEGnVgFV)], [jlKtAnUR42(jhISHLHVn7); jlKtAnUR42(MHtEGnVgFV)], -yKemFy7uy5, t161DzmNiH, UD2HocmQWO, 2*yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
jbt_rXhxZ9();
tIPYStgOUJ = true;
break
end
end
if ~tIPYStgOUJ
continue
end
end
end
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
EY_25EZAQ4 = size(c9Grt0XYkZ,1);
maxstep = min((t161DzmNiH*25)+UD2HocmQWO,yKemFy7uy5+1);
for htO5RcX1HH = 1:EY_25EZAQ4
[yhLClLU0dr eLi2ZHUBQN] = find(B == -yKemFy7uy5);
[c9Grt0XYkZ jlKtAnUR42] = find(B == yKemFy7uy5);
tIPYStgOUJ = false;
path = LmhassONoe(B,ewVHthm2c5,YwkVDnmr9s,yhLClLU0dr,eLi2ZHUBQN,c9Grt0XYkZ,jlKtAnUR42, -yKemFy7uy5, t161DzmNiH, UD2HocmQWO, yKemFy7uy5);
if size(path,1) > 0
W = [W; path];
B = WpiEQbyVus(B,path,-yKemFy7uy5);
jbt_rXhxZ9();
tIPYStgOUJ = true;
end
if ~tIPYStgOUJ
break
end
end
end
end
function path = LmhassONoe(B,ewVHthm2c5,YwkVDnmr9s,rowS,colS,qrX_XgJRWZ,g6yTU0YOod,mhEXNSGwWv,t161DzmNiH,UD2HocmQWO,qoe7ITi0mN)
function path = Gp4VtWd2Aq(qPZgIP7j1W,step)
T1iEX9zn24(qPZgIP7j1W) = vFV8RAja4U;
z7G1UmGoQL=mod(qPZgIP7j1W,snbtJPPQXO);
tX3l0oRykF=ceil(qPZgIP7j1W/snbtJPPQXO);
path = zeros(step,4);
htO5RcX1HH = 0;
while isempty(find(rowS==z7G1UmGoQL & colS==tX3l0oRykF,1))
htO5RcX1HH = htO5RcX1HH + 1;
path(htO5RcX1HH,1:2) = [z7G1UmGoQL tX3l0oRykF];
qPZgIP7j1W = z7G1UmGoQL + (tX3l0oRykF-1)*snbtJPPQXO;
c2Rz2J8MMQ = T1iEX9zn24(qPZgIP7j1W);
jEoQq_F_hS=mod(c2Rz2J8MMQ,snbtJPPQXO);
ejGR2oOWL7=ceil(c2Rz2J8MMQ/snbtJPPQXO);
path(htO5RcX1HH,3:4) = [jEoQq_F_hS ejGR2oOWL7];
z7G1UmGoQL = jEoQq_F_hS;
tX3l0oRykF = ejGR2oOWL7;
if mmj8vDywD3(z7G1UmGoQL,tX3l0oRykF)
htO5RcX1HH = htO5RcX1HH + 1;
path(htO5RcX1HH,:) = [z7G1UmGoQL tX3l0oRykF z7G1UmGoQL tX3l0oRykF];
end
end
path = path(1:htO5RcX1HH,:);
end
[snbtJPPQXO KI9lREpYOt] = size(B);
mmj8vDywD3 = false(snbtJPPQXO,KI9lREpYOt);
T1iEX9zn24 = zeros(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y = -ones(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y(rowS + (colS-1)*snbtJPPQXO) = 0;
JIcPX5aY0Y(qrX_XgJRWZ + (g6yTU0YOod-1)*snbtJPPQXO) = -2;
maxstep = min((t161DzmNiH*25)+UD2HocmQWO,qoe7ITi0mN+1);
a_9Cc_fCJ6 = zeros(maxstep+26,1);
for step = 0:maxstep
if step == 0
z_R7AFlG44 = rowS + (colS-1)*snbtJPPQXO;
elseif a_9Cc_fCJ6(step) == 0
continue
else
z_R7AFlG44 = find(JIcPX5aY0Y == step);
end
uqU4tROcTv = numel(z_R7AFlG44);
for aJAyGSFRIL = 1:uqU4tROcTv
vFV8RAja4U = z_R7AFlG44(aJAyGSFRIL);
qPZgIP7j1W = vFV8RAja4U - snbtJPPQXO;
bOGC8L4qGu = JIcPX5aY0Y(qPZgIP7j1W);
if bOGC8L4qGu == -2
path = Gp4VtWd2Aq(qPZgIP7j1W,step+1);
return
elseif bOGC8L4qGu == -1
if B(qPZgIP7j1W) == 0
JIcPX5aY0Y(qPZgIP7j1W) = step+1; a_9Cc_fCJ6(step+1) = 1;
T1iEX9zn24(qPZgIP7j1W) = vFV8RAja4U;
elseif ewVHthm2c5(qPZgIP7j1W)
JIcPX5aY0Y(qPZgIP7j1W) = step+26; a_9Cc_fCJ6(step+26) = 1;
T1iEX9zn24(qPZgIP7j1W) = vFV8RAja4U;
mmj8vDywD3(qPZgIP7j1W) = true;
end
end
qPZgIP7j1W = vFV8RAja4U + snbtJPPQXO;
bOGC8L4qGu = JIcPX5aY0Y(qPZgIP7j1W);
if bOGC8L4qGu == -2
path = Gp4VtWd2Aq(qPZgIP7j1W,step+1);
return
elseif bOGC8L4qGu == -1
if B(qPZgIP7j1W) == 0
JIcPX5aY0Y(qPZgIP7j1W) = step+1; a_9Cc_fCJ6(step+1) = 1;
T1iEX9zn24(qPZgIP7j1W) = vFV8RAja4U;
elseif ewVHthm2c5(qPZgIP7j1W)
JIcPX5aY0Y(qPZgIP7j1W) = step+26; a_9Cc_fCJ6(step+26) = 1;
T1iEX9zn24(qPZgIP7j1W) = vFV8RAja4U;
mmj8vDywD3(qPZgIP7j1W) = true;
end
end
qPZgIP7j1W = vFV8RAja4U - 1;
bOGC8L4qGu = JIcPX5aY0Y(qPZgIP7j1W);
if bOGC8L4qGu == -2
path = Gp4VtWd2Aq(qPZgIP7j1W,step+1);
return
elseif bOGC8L4qGu == -1
if B(qPZgIP7j1W) == 0
JIcPX5aY0Y(qPZgIP7j1W) = step+1; a_9Cc_fCJ6(step+1) = 1;
T1iEX9zn24(qPZgIP7j1W) = vFV8RAja4U;
elseif YwkVDnmr9s(qPZgIP7j1W)
JIcPX5aY0Y(qPZgIP7j1W) = step+26; a_9Cc_fCJ6(step+26) = 1;
T1iEX9zn24(qPZgIP7j1W) = vFV8RAja4U;
mmj8vDywD3(qPZgIP7j1W) = true;
end
end
qPZgIP7j1W = vFV8RAja4U + 1;
bOGC8L4qGu = JIcPX5aY0Y(qPZgIP7j1W);
if bOGC8L4qGu == -2
path = Gp4VtWd2Aq(qPZgIP7j1W,step+1);
return
elseif bOGC8L4qGu == -1
if B(qPZgIP7j1W) == 0
JIcPX5aY0Y(qPZgIP7j1W) = step+1; a_9Cc_fCJ6(step+1) = 1;
T1iEX9zn24(qPZgIP7j1W) = vFV8RAja4U;
elseif YwkVDnmr9s(qPZgIP7j1W)
JIcPX5aY0Y(qPZgIP7j1W) = step+26; a_9Cc_fCJ6(step+26) = 1;
T1iEX9zn24(qPZgIP7j1W) = vFV8RAja4U;
mmj8vDywD3(qPZgIP7j1W) = true;
end
end
end
end
path = zeros(0,4);
end
function path = M3h0aZuqjb(B,rowS,colS,qrX_XgJRWZ,g6yTU0YOod,mhEXNSGwWv,bIAxIDEkU8,qoe7ITi0mN)
function path = Gp4VtWd2Aq(z7G1UmGoQL,tX3l0oRykF,wj9BQ8iAIz)
sOUB0PyazU(z7G1UmGoQL,tX3l0oRykF) = VDisk3ZfO5(aJAyGSFRIL);
R1sOiJUNng(z7G1UmGoQL,tX3l0oRykF) = nhR2L5nirU(aJAyGSFRIL);
path = zeros(wj9BQ8iAIz,4);
for htO5RcX1HH = 1:wj9BQ8iAIz
path(htO5RcX1HH,1:2) = [z7G1UmGoQL tX3l0oRykF];
jEoQq_F_hS = sOUB0PyazU(z7G1UmGoQL,tX3l0oRykF);
ejGR2oOWL7 = R1sOiJUNng(z7G1UmGoQL,tX3l0oRykF);
path(htO5RcX1HH,3:4) = [jEoQq_F_hS ejGR2oOWL7];
z7G1UmGoQL = jEoQq_F_hS;
tX3l0oRykF = ejGR2oOWL7;
end
end
[snbtJPPQXO KI9lREpYOt] = size(B);
sOUB0PyazU = zeros(snbtJPPQXO,KI9lREpYOt);
R1sOiJUNng = zeros(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y = -ones(snbtJPPQXO,KI9lREpYOt);
JIcPX5aY0Y(rowS+(colS-1)*snbtJPPQXO) = 0;
JIcPX5aY0Y(qrX_XgJRWZ+(g6yTU0YOod-1)*snbtJPPQXO) = -2;
G6lAESrp0H = zeros(snbtJPPQXO*KI9lREpYOt,1);
joe81t5UsP = zeros(snbtJPPQXO*KI9lREpYOt,1);
count = numel(rowS);
G6lAESrp0H(1:count) = rowS;
joe81t5UsP(1:count) = colS;
HoyXoHJCuE=[-1 1 0 0];
MvWwsMWzpl=[0 0 -1 1];
for step = 0:min(bIAxIDEkU8,qoe7ITi0mN)
if count < 1, break, end
uqU4tROcTv = count;
VDisk3ZfO5 = G6lAESrp0H(1:uqU4tROcTv);
nhR2L5nirU = joe81t5UsP(1:uqU4tROcTv);
count = 0;
for aJAyGSFRIL = 1:uqU4tROcTv
gYTSU__Rrl = nhR2L5nirU(aJAyGSFRIL);
EZEJFTNB3q = VDisk3ZfO5(aJAyGSFRIL);
for fG7sYZdSeu=1:4
z7G1UmGoQL = EZEJFTNB3q + HoyXoHJCuE(fG7sYZdSeu);
tX3l0oRykF = gYTSU__Rrl + MvWwsMWzpl(fG7sYZdSeu);
qPZgIP7j1W = z7G1UmGoQL + (tX3l0oRykF-1)*snbtJPPQXO;
bOGC8L4qGu = JIcPX5aY0Y(qPZgIP7j1W);
if bOGC8L4qGu == -2
path = Gp4VtWd2Aq(z7G1UmGoQL,tX3l0oRykF,step+1);
return
elseif bOGC8L4qGu == -1 && B(qPZgIP7j1W) == 0
JIcPX5aY0Y(qPZgIP7j1W) = step+1;
sOUB0PyazU(qPZgIP7j1W) = EZEJFTNB3q;
R1sOiJUNng(qPZgIP7j1W) = gYTSU__Rrl;
count = count + 1; G6lAESrp0H(count) = z7G1UmGoQL; joe81t5UsP(count) = tX3l0oRykF;
end
end
end
end
path = [];
end