Cod sursa(job #1659907)

Utilizator mihaitamoglanmihai moglan mihaitamoglan Data 22 martie 2016 18:18:33
Problema Jocul Flip Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.47 kb
type matrice=array [1..16,1..16]of longint;
     tablou=array [0..17]of integer;
var t:matrice;
    a,b:tablou;
    k,m,n,p,l,s,sum:int64;
    f,g:text;
    i,j,x,y:word;
begin
assign(f,'flip.in');
assign(g,'flip.out');
reset(f);
rewrite(g);
read(f,n,m);
for i:=1 to n do
  for j:=1 to m do
   read(f,t[i,j]);
for i:=1 to n do
 a[i]:=1;
for i:=1 to m do
 b[i]:=1;
p:=1;
for i:=1 to n do
 p:=p*2;
l:=1;
for i:=1 to m do
 l:=l*2;
i:=1;
while i<=p do
 begin
  j:=1;
   while j<=l do
    begin
     k:=0;
      for x :=1 to n do
       for y:=1 to m do
         k:=k+t[x,y]*a[x]*b[y];
     if k>sum then sum:=k;
     s:=m;
     if b[m]=1 then b[m]:=-1
       else b[m]:=0;
     repeat
        if b[s]=0 then begin
                      b[s]:=1;
                      if s-1>0 then begin
                                        if (b[s-1]=1) then b[s-1]:=-1
                                                 else b[s-1]:=0;
                                     end;
                      end;
        if s-1>0then  s:=s-1;
     until b[s]<>0;
     j:=j+1;
   end;
  s:=n;
  if a[n]=1 then a[n]:=-1
   else a[n]:=0;
  repeat
    if a[s]=0 then begin
                a[s]:=1;
                if s-1>0 then begin if (a[s-1]=1) then a[s-1]:=-1
                                  else a[s-1]:=0;
                               end;
                end;
    if s-1>0 then s:=s-1;
  until a[s]<>0;
  i:=i+1;
 end;
write(g,sum);
close(f);
close(g);
end.