ID: 
Title:typ2What A Mess -12
Author:utrDrSuess
Date:2006-04-12 16:51:302006-04-12 16:58:47
Score:840.2677846.7585
Result:8369184386
CPU Time:64.952163.7755
Status:PassedPassed
Code:
- function m=solver(tb,nM) - [m,b]=l0(tb,nM,1);st=sum(sum(b));if(st > 800) - [m2,b]=l0(tb,nM,0.9);st2=sum(sum(b));if st2<st - m=m2;end;end - function [l1,l2]=l0(tl2,nl1,z) - l2=zeros(size(tl2,1)+1,size(tl2,2)+2);l2(2:end,2:end-1)=tl2;[l3,l4]=size(l2);l1=ones(nl1,3);l5=0; - zz=zeros(1,floor(((l3-1)*(l4-2))/2));i=1;for r=l3:-1:2 - for cl=l4-2:-1:1 - if mod(r+cl,2) - zz(i)=(cl*l3)+r;i=i+1;end;end;end - l6=zeros(1,900);l7=zeros(1,900);l8=zeros(1,400);l9=zeros(numel(l2),1); - if (l3*l4)>10.5*nl1 - I0=40;I1=.817;I2=2.93;I3=1.566;elseif (l3*l4)>8.5*nl1 - I0=29;I1=.817;I2=2.93;I3=1.566;elseif l3*l4>=256 - I0=26;I1=.951;I2=2.8;I3=1.4;else - I0=26;I1=.945;I2=2.97;I3=1.46;end - I1=I1*z;l2=a37(l2,I3);I4=ceil(I2*nl1/10);I5=floor(0.66*nl1);while 1 - if l5==I5,l2=a37(l2,2/(1+I3));end - [I6,I7,I8] = I9(l2);if isempty(I6),[O0,l2]=O1(l2); - if O0(1) - l5=l5+1;l1(l5,:)=O0;if(l5==nl1) - break;end + function X9=solver(C3,Z1) + [V9,J1]=size(C3); + X9=ones(Z1,3); + P4=0; + M3=rand(4,1); + if(V9*J1)>10.5*Z1 + Q2=40; + A7=.847; + E1=2.93; + P2=1.566; + elseif(V9*J1)>8.5*Z1 + Q2=29; + A7=.847; + E1=2.93; + P2=1.566; + elseif V9*J1>=256 + Q2=26; + A7=.951; + E1=2.8; + P2=1.4; + else + Q2=26; + A7=0.945; + E1=2.97; + P2=1.46; + end + C3=nthroot(C3,P2); + P1=ceil(E1*Z1/10); + Y1=floor((0.66+(rand-0.5)*0.1)*Z1); + while 1 + if P4==Y1,C3=nthroot(C3,2/(1+P2));end + [U6,S0,O4]=J0(V9,J1,C3); + if isempty(U6), + [W0,C3]=C4(V9,J1,C3); + if W0(1) + P4=P4+1; + X9(P4,:)=W0; + if(P4==Z1) + break; + end continue end break end - if l5<nl1-1 - [I7,O2]=sort(I7,2,'descend');I6=I6(O2);for k=1:min(numel(I6),I0) - O3=O4(l2,I8,I6(k));[O5,O6]=I9(O3);if (~isempty(O5)) - I4_=max(min(I4,nl1-l5-3),1);if numel(O6)<=I4_ - I7(k)=I7(k)+sum(O6);else - O6=sort(O6,2,'descend');I7(k)=I7(k)+sum(O6(1:I4_));end + if P4<Z1-1 + [S0,T8]=sort(S0,2,'descend'); + U6=U6(T8); + for T7=1:min(numel(U6),Q2) + B4=E9(C3,O4,U6(T7),V9); + [Q3,T5]=J0(V9,J1,B4); + if(~isempty(Q3)) + W9=max(min(P1,Z1-P4-3),1); + if numel(T5)<=W9 + S0(T7)=S0(T7)+sum(T5); + else + T5=sort(T5,2,'descend'); + S0(T7)=S0(T7)+sum(T5(1:W9)); end - if (I7(k)<I1*I7(1)) - break;end end + if(S0(T7)<A7*S0(1)) + break; end - [O7,O2]=max(I7);O8=I6(O2);l5=l5+1;l1(l5,:)=[mod(O8-1,l3),ceil(O8/l3)-1,0];l2=O4(l2,I8,O8); - if (l5==nl1) + end + end + [J3,T8]=max(S0); + D8=U6(T8); + P4=P4+1; + X9(P4,:)=[mod(D8-1,V9)+1,ceil(D8/V9),0]; + C3=E9(C3,O4,D8,V9); + if(P4==Z1) break; end end - l1=l1(1:l5,:); - function [O5,O6,O9]=I9(l2); - [l3,l4]=size(l2);L0=0;ii=0;L1=0;L2=0;L3=0;c=0; - for zi=1:numel(zz) - i=zz(zi);c=l2(i);if c && (l2(i+1)==c||l2(i+l3)==c||l2(i-1)==c||l2(i-l3)==c) - L0=L0+1;l8(1)=i;l2(i)=0;L1=i;L2=0;L3=1;while (L3-L2) - L2=L2+1;ii=l8(L2);l9(ii)=L1;L1=ii;if l2(ii+1)==c - L3=L3+1;l8(L3)=ii+1;l2(ii+1)=0;end - if l2(ii-1)==c - L3=L3+1;l8(L3)=ii-1;l2(ii-1)=0;end - if l2(ii+l3)==c - L3=L3+1;l8(L3)=ii+l3;l2(ii+l3)=0;end - if l2(ii-l3)==c - L3=L3+1;l8(L3)=ii-l3;l2(ii-l3)=0;end + X9=X9(1:P4,:); + function[U6,S0,O4]=J0(V9,J1,C3) + O4=zeros(V9,J1); + T0=1;% find(any(C3,2),1); + if(T0==1) + N7=C3(1); + if N7 + O4(1)=1; end - l7(L0)=c*L2;l6(L0)=ii;end + T7=1; + for j=2:J1 + I6=T7; + T7=T7+V9; + C8=N7; + N7=C3(T7); + if N7 + O4(T7)=T7; + if(C8==N7) + O4(I6)=T7; end - O5=l6(1:L0);O6=l7(1:L0);O9=l9;end - function B=O4(B,dj,y) - B(y)=0;L4=ceil(y/l3);L5=L4;L6=L4;while dj(y)~=y - y=dj(y);B(y)=0;L4=ceil(y/l3);L5=min(L5, L4);L6=max(L6, L4);end; - for ip=L5:L6, - kp=B(B(:,ip)>0,ip);B(:,ip)=0;B(l3-numel(kp)+1:l3,ip)=kp;end end - function [O0,L8]=O1(l2) - [l3 l4]=size(l2);L7=[-1 l3 1 -l3];L9=l3*l4;O0=zeros(1,3);L8=l2;Q0=0;Q1=find(l2~=0)';Q2=numel(Q1); - for kc=1:Q2 - jj=Q1(kc);for Q3=1:4 - np=jj+L7(Q3);if np>0 && np<=L9 && l2(np)>0 && l2(np)~=l2(jj) - tl2=Q4(l2,jj,np);[Q5,Q6]=I9(tl2);if (~isempty(Q6)) - if (max(Q6)> Q0) - Q0=max(Q6);Q7=jj;Q8=Q3;Q9=np;end + end + end + for i=max(2,T0):V9 + T7=i; + N7=C3(T7); + if(N7) + O4(T7)=T7; + I6=T7-1; + if(C3(I6)==N7) + n=-1; + while(n ~=I6) + n=I6; + I6=O4(n); + O4(n)=T7; + end + end + end + for j=2:J1 + T7=T7+V9;% move H1 P3 I7 + C8=N7; + N7=C3(T7); + if(N7) + O4(T7)=T7; + if(C8==N7) + O4(T7-V9)=T7; + end + if(C3(T7-1)==N7) + n=-1; + I6=T7 - 1; + while(n ~=I6) + n=I6; + I6=O4(n); + O4(n)=T7; + end + end + end + end + end + U6=zeros(1,256); + U2=0; + N2=zeros(V9,J1); + for i=V9:-1:T0 + T7=i+V9*(J1-1); + for j=1:J1 + if C3(T7) + I6=O4(T7); + if(I6==T7) + N2(T7)=1; else - for k2=max(1,kc-20):min(Q2,kc+20) - W0=Q1(k2);for W1=1:4 - np2=W0+L7(W1);if np2>0 && np2<=L9 && tl2(np2)>0 && tl2(np2)~=tl2(W0) - W2=Q4(tl2,W0,np2);[W3,W4,W5]=I9(W2);if (~isempty(W4) && max(W4)>Q0) - W6=false;[W7,W8]=max(W4);Y=W3(W8); - while (W5(Y)~=Y) - Y = W5(Y);if (Y==np || Y==jj) - W6=true;end + while N2(I6)==0 + I6=O4(I6); end - if (Y==np || Y==jj) - W6=true; + O4(T7)=O4(I6); + K3=N2(I6)+1; + N2(I6)=K3; + if(K3==2) + U2=U2+1; + U6(1,U2)=I6; end - if (W6) - Q0=max(W4);Q7=jj;Q8=Q3;Q9=np; + O4(I6)=T7; end end + T7=T7 - V9; end end + U6=U6(1:U2); + S0=zeros(1,U2); + for T7=1:U2 + I6=U6(T7); + U6(T7)=O4(I6); + S0(T7)=N2(I6)*C3(I6); + O4(I6)=I6; end + function U1=E9(U1,G8,cell,G6) + W6=cell; + U1(W6)=0; + C1=ceil(W6/G6); + R3=C1;U3=C1; + while G8(W6)~=W6 + W6=G8(W6); + U1(W6)=0; + C1=ceil(W6/G6); + R3=min(R3,C1); + U3=max(U3,C1); + end; + for i=R3:U3, + T7=U1(U1(:,i)>0,i); + U1(:,i)=0;U1(G6-numel(T7)+1:G6,i)=T7; end + function[W0,Q6]=C4(V9,J1,C3) + Z7=[-1 V9 1 -V9]; + H4=V9*J1; + W0=zeros(1,3); + Q6=C3; + O8=0; + Z0=find(C3~=0)'; + F6=numel(Z0); + for T7=1:F6 + E3=Z0(T7); + for L1=1:4 + P5=E3+Z7(L1); + if P5>0 && P5<=H4 && C3(P5)>0 && C3(P5)~=C3(E3) + U4=C3;U4([E3,P5])=U4([P5,E3]); + [Y6,B5]=J0(V9,J1,U4); + if(~isempty(B5)) + if(max(B5)>O8) + O8=max(B5); + B8=E3;N5=L1;X7=P5; end + else + for M0=max(1,T7-10):min(F6,T7+10) + D5=Z0(M0); + for Z2=1:4 + X0=D5+Z7(Z2); + if X0>0 && X0<=H4 && U4(X0)>0 && U4(X0)~=U4(D5) + K1=U4;K1([D5,X0])=K1([X0,D5]); + [E7,W2,K4]=J0(V9,J1,K1); + if(~isempty(W2)&& max(W2)>O8) + [M8,U0]=max(W2); + N8=E7(U0); + while(K4(N8)~=N8) + N8=K4(N8); end + if(N8==P5 || N8==E3) + O8=max(W2); + B8=E3;N5=L1;X7=P5; end - if (Q0>0) - O0 = [mod(Q7-1,l3),ceil(Q7/l3)-1,Q8];L8=Q4(l2,Q7,Q9); end end - function l2 = Q4(l2,el1,el2) - l2([el1,el2]) = l2([el2,el1]); end end end - function y = a37(x, n) + end - y =(x.^(1/n)); + end - end+ end + if(O8>0) + W0=[mod(B8-1,V9)+1,ceil(B8/V9),N5]; + Q6=C3;Q6([B8,X7])=U4([X7,B8]); + end + function C3=R2(C3,A9,H7) + C3([A9,H7])=C3([H7,A9]);