ID:45902
Title:Fiasco 01
Author:Fabio Carnevale
Date:2008-05-01 14:09:29
Score:17925.2222
Result:177977.00 (cyc: 6, node: 1818)
CPU Time:62.1118
Status:Passed
Comments:Random search engine (sorry for the useless comment, I'm in a hurry!)
Based on:none
Code:
function W = solver(B)
hdLf0 = [];
W = zeros(0,4);
[Xuo73,uttkR] = meshgrid(1:size(B,2),1:size(B,1));
wg6pL = size(B,1);
npOhh = size(B,2);
owIIz = zeros(size(B));
dLGMz = wg6pL*npOhh;
owIIz(1:dLGMz) = 1:dLGMz;
EHPeC =  [ 1000*ones(wg6pL,1) , owIIz(:,1:end-1)];
bCp46 =  [ owIIz(:,2:end) , 1000*ones(wg6pL,1) ];
YOzRf =  [ owIIz(2:end,:) ; 1000*ones(1,npOhh) ];
GtLqq =  [ 1000*ones(1,npOhh) ; owIIz(1:end-1,:)];
qaNkw = zeros(wg6pL*npOhh,4);
qaNkw(:,1:2) = 1;
[ahu0F,Mlnvx] = sort([ EHPeC(:) , bCp46(:) , YOzRf(:),GtLqq(:) ],2);
qaNkw = qaNkw(sub2ind([wg6pL*npOhh,4],repmat((1:wg6pL*npOhh)',1,4),Mlnvx));
[EHPeC,bCp46] = ind2sub([wg6pL*npOhh,4],find(ahu0F==1000) );
ahu0F(sub2ind([wg6pL*npOhh,4],EHPeC,bCp46)) = EHPeC;
IniPC = repmat((1:wg6pL*npOhh)',1,4);
jlDND = 1;
rMsSY = find(B);
maNTh = sortrows([B(rMsSY(:)),rMsSY]);
rMsSY = maNTh(:,2);
[Values,xazBf,mWejf] = unique(maNTh(:,1),'first');
deFiM = [xazBf(2:end)-1 ; numel(rMsSY)];
lLYnf = histc(maNTh(:,1),Values);
Oyybk = numel(Values);
TV8j7 =  ( lLYnf .^1) .* (Values.^0);
V6Tle = (lLYnf .* Values);
aWvbt = wg6pL*npOhh;
AJQ1g = B>0;
gayZF = AJQ1g;
PJnCW = AJQ1g;
qbMQW = zeros(Oyybk,1);
W = [];
while 1
LwByp = gayZF;
iy2JT = PJnCW;
[zTEgT,aBRln] = gWGaV(AJQ1g);
if isempty(zTEgT)
break
end
if isempty(find(aBRln(:,5)>0,1))
break
end
[s8DN6,Mlnvx] = max(aBRln(:,5));
qbMQW(aBRln(Mlnvx,6)) = 1;
yOXRH = zTEgT(aBRln(Mlnvx,1):aBRln(Mlnvx,2),:);
W = [W ; yOXRH];
[ AJQ1g , PJnCW , gayZF ] = ...
wEXW6( AJQ1g , PJnCW , gayZF , yOXRH );
end
return
function [cuvlF,UBOHg,FrzIU] = wEXW6(AJQ1g,Z3tsC,h23hv,oSCBz)
cuvlF = AJQ1g;
UBOHg = Z3tsC;
FrzIU = h23hv;
QWHc3 = oSCBz(:,1)==oSCBz(:,3) & oSCBz(:,2)==oSCBz(:,4);
Mlnvx = sub2ind( size(AJQ1g) , oSCBz(:,[1 3]) , oSCBz(:,[2 4]) );
cuvlF(Mlnvx) = 1;
XG9BM = oSCBz(:,1) ~= oSCBz(:,3);
UBOHg(Mlnvx(XG9BM,:)) = 1;
XG9BM = oSCBz(:,2) ~= oSCBz(:,4);
FrzIU(Mlnvx(XG9BM,:)) = 1;
end
function [Qi2Ew,Ikvfi] = gWGaV(J448t)
Ikvfi = [];
Qi2Ew = [];
[s8DN6,xmqWf] = sort(TV8j7);
kLVTv = sum(V6Tle(qbMQW==0));
AkaXn = kLVTv/sum(V6Tle);
imngf = numel(find(J448t==0));
jlDND = kLVTv / imngf * 1 * AkaXn.^2;
for IziuK=1:Oyybk
ypCsE = xmqWf(IziuK);
if xazBf(ypCsE)<deFiM(ypCsE) && ~qbMQW(ypCsE);
ybPaI = size(Qi2Ew,1);
[G4ouS,q5hnk]=Mz_zu(J448t,ypCsE);
if isempty(q5hnk)
continue
end
q5hnk(:,1:2) = q5hnk(:,1:2) + ybPaI;
Qi2Ew = [Qi2Ew ; G4ouS];
Ikvfi = [Ikvfi ; [q5hnk , ones(size(q5hnk,1),1)*ypCsE ] ];
if ~isempty(Qi2Ew)
break
end
end
end
end
function [Qi2Ew,Ikvfi] = FUOz8(J448t)
Ikvfi = [];
Qi2Ew = [];
for ypCsE=1:Oyybk
if xazBf(ypCsE)<deFiM(ypCsE) && ~qbMQW(ypCsE);
ybPaI = size(Qi2Ew,1);
[G4ouS,q5hnk]=Mz_zu(J448t,ypCsE);
if isempty(q5hnk)
continue
end
q5hnk(:,1:2) = q5hnk(:,1:2) + ybPaI;
Qi2Ew = [Qi2Ew ; G4ouS];
Ikvfi = [Ikvfi ; [q5hnk , ones(size(q5hnk,1),1)*ypCsE ] ];
end
end
end
function [a6vuB,zK38X] = Mz_zu(J448t,ceRmr)
zK38X = [];
AuwNN = xazBf(ceRmr);
vDPBQ = deFiM(ceRmr);
M8m4h = vDPBQ-AuwNN+1;
lPUSH = rMsSY(AuwNN:vDPBQ);
YtaGO = 1001*ones(wg6pL*npOhh,M8m4h);
cIOzx = lPUSH;
g7DW0 = (1:M8m4h)';
l5Ga4 = sub2ind([wg6pL*npOhh,M8m4h],cIOzx,g7DW0);
Nsyxl = min( wg6pL+npOhh , ceil(Values(ceRmr)*M8m4h/2) ) / 3;
YtaGO(l5Ga4) = 0;
while ~isempty(l5Ga4) && ~isempty(find(YtaGO(l5Ga4) < Nsyxl ,1,'first'))
AUFtx = ahu0F(cIOzx,:);
SG5zy = B(AUFtx)~=Values(ceRmr);
iXZSJ = ones(size(AUFtx)) + 1000 * ...
( SG5zy & ( B(AUFtx)>0 | ...
(LwByp(AUFtx) & qaNkw(cIOzx,:)) ...
| (iy2JT(AUFtx) & ~qaNkw(cIOzx,:) ) ) ) + ...
25 * (J448t(AUFtx) & SG5zy);
i_Kre = iXZSJ + repmat(YtaGO(l5Ga4),1,4);
[EHPeC,bCp46] = ind2sub( size(i_Kre), (1:prod(size(i_Kre)))' );
gV6vQ = sub2ind([wg6pL*npOhh,M8m4h] , AUFtx , repmat(g7DW0,1,4));
maNTh = sortrows([ gV6vQ(:) , i_Kre(:)],[1 2]);
[Ap9p_ , S37f1] = unique(maNTh(:,1),'first');
E250Y = maNTh(S37f1,2);
sosPS = E250Y<1000 & E250Y<YtaGO(Ap9p_);
l5Ga4 = Ap9p_(sosPS);
YtaGO(l5Ga4) = min( YtaGO(l5Ga4) , E250Y(sosPS));
[cIOzx,g7DW0] = ind2sub([wg6pL*npOhh,M8m4h] , l5Ga4);
end
[oE693,iST2v] = sort(cumsum(sort(YtaGO,2),2),1);
Y5C6x = min(4,size(oE693,1));
urB3g = repmat( (2:M8m4h)*Values(ceRmr) , Y5C6x ,1);
rK53j = repmat( (2:M8m4h)*Values(ceRmr) , Y5C6x ,1) - ...
oE693(1:Y5C6x,2:end) ./ ( urB3g.^(0) ) * (1+jlDND);
[R6ae3,FXojJ] = sort(rK53j(:),'descend');
ZZpdB = min(1,numel(FXojJ));
FXojJ = FXojJ(1:ZZpdB);
R6ae3 = R6ae3(1:ZZpdB);
FXojJ = FXojJ(R6ae3(:)>0);
[dkxI9,cq9iG] = ind2sub([Y5C6x , M8m4h-1],FXojJ);
IrPyY = iST2v(sub2ind( size(iST2v) , dkxI9 , cq9iG+1));
fNWMg = cq9iG + 1;
a6vuB = [];
if isempty(IrPyY)
return
end
for z8RFX = 1:numel(IrPyY)
jw4lq = wFuXB(IrPyY(z8RFX),fNWMg(z8RFX));
wXIM4(z8RFX) = size(a6vuB,1) + 1;
a6vuB = [a6vuB ; jw4lq];
cu0sk(z8RFX) = size(a6vuB,1);
VNcGw(z8RFX) = sum(jw4lq(:,1)==jw4lq(:,3) & jw4lq(:,2)==jw4lq(:,4));
j0WT_(z8RFX) = size(jw4lq,1) - VNcGw(z8RFX);
vHrAf = j0WT_(z8RFX) + 25 * VNcGw(z8RFX);
pq2o3 = fNWMg(z8RFX) * Values(ceRmr);
cWuY8(z8RFX) = pq2o3 - vHrAf;
end
[s8DN6,Mlnvx] = max(cWuY8);
zK38X = [wXIM4(:),cu0sk(:),VNcGw(:),j0WT_(:),cWuY8(:)];
function q0NFq = wFuXB(C9i6G,ZiuH9)
[s8DN6,TT38y] = sort(YtaGO(C9i6G,:)');
TT38y = TT38y(1:ZiuH9);
l5Ga4 = C9i6G;
gb3z3 = TT38y;
vHdXR = ones(ZiuH9,1);
yjyd4 = l5Ga4(vHdXR);
yGVks = zeros(0,1);
LZtnf = zeros(0,1);
YvXZL = zeros(0,1);
while ~isempty(gb3z3)
jWCVQ = YtaGO(sub2ind(size(YtaGO),yjyd4(:),gb3z3));
AOo8U = ahu0F(yjyd4,:);
jqaDH = YtaGO( sub2ind(size(YtaGO),AOo8U , repmat(gb3z3(:),1,4) ) );
Y1UCy = repmat(jWCVQ,1,4);
GJrtp = Y1UCy - jqaDH == 26;
vSmGy = jqaDH<Y1UCy;
[ivpzn,s8DN6,LoWGo] = unique(AOo8U(:));
Count = histc(AOo8U(vSmGy),ivpzn);
[tfEGh , ZIRKx ] = max(vSmGy .* reshape(Count(LoWGo),size(vSmGy)) , [] , 2);
CKLDf = tfEGh>0;
jNkCh = find(CKLDf);
oIJAh = sub2ind( size(vSmGy) , jNkCh , ZIRKx(CKLDf) );
qYtTq = GJrtp(oIJAh);
gb3z3 = gb3z3(jNkCh);
raFXZ = yjyd4(jNkCh);
yGVks = [yGVks ; raFXZ];
yjyd4 = AOo8U(oIJAh);
LZtnf = [LZtnf ; yjyd4];
hyUNJ = raFXZ(qYtTq);
if ~isempty(hyUNJ)
YvXZL = [YvXZL ; hyUNJ];
end
end
tgR92 = min(yGVks,LZtnf);
kPOKX = max(yGVks,LZtnf);
[yGVks,LZtnf] = ...
ind2sub([wg6pL*npOhh,wg6pL*npOhh], unique(sub2ind([wg6pL*npOhh,wg6pL*npOhh],tgR92,kPOKX)) );
YvXZL = unique(YvXZL);
[EHPeC,bCp46] = ind2sub([wg6pL,npOhh],yGVks);
[YOzRf,GtLqq] = ind2sub([wg6pL,npOhh],LZtnf);
[bc2fD,FHTjE] = ind2sub([wg6pL,npOhh],YvXZL);
q0NFq = [EHPeC,bCp46,YOzRf,GtLqq];
q0NFq = [q0NFq; [bc2fD,FHTjE,bc2fD,FHTjE]];
end
end
end