Cod sursa(job #131238)

Utilizator andreivFMI - vacaroiu andrei andreiv Data 3 februarie 2008 14:38:11
Problema Jocul Flip Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.66 kb
var f,g1:text;   
    i,j,g,n,m,h,s,max,k:longint;   
    a:array[0..17,0..17] of longint;   
    b,v:array[0..20] of longint;   
  
procedure lsadf;   
begin  
for g:=0 to 1 shl m-1 do  
    begin  
    s:=0;   
    k:=g;   
    j:=0;   
    while k>0 do  
    begin  
    inc(j);   
    v[j]:=k mod 2;   
    k:=k div 2;   
    end;   
    for i:=1 to m do  
    begin  
    if v[i]=1 then  
    h:=-1  
    else h:=1;   
    for j:=1 to n do  
    b[j]:=b[j]+a[j,i]*h;   
    end;   
    for i:=1 to n do  
    begin  
    s:=s+abs(b[i]);   
    b[i]:=0;   
    end;   
    if s>max then  
    max:=s;   
    end;   
end;   
  
begin  
assign(f,'flip.in');   
reset(f);   
assign(g1,'flip.out');   
rewrite(g1);   
read(f,n,m);   
for i:=1 to n do  
    for j:=1 to m do  
        read(f,a[i,j]);   
lsadf;   
writeln(g1,max);   
close(f);   
close(g1);   
end.  
var f,g1:text;
    i,j,g,n,m,h,s,max,k:longint;
    a:array[0..17,0..17] of longint;
    b,v:array[0..20] of longint;

procedure lsadf;
begin
for g:=0 to 1 shl m-1 do
    begin
    s:=0;
    k:=g;
    j:=0;
    while k>0 do
    begin
    inc(j);
    v[j]:=k mod 2;
    k:=k div 2;
    end;
    for i:=1 to m do
    begin
    if v[i]=1 then
    h:=-1
    else h:=1;
    for j:=1 to n do
    b[j]:=b[j]+a[j,i]*h;
    end;
    for i:=1 to n do
    begin
    s:=s+abs(b[i]);
    b[i]:=0;
    end;
    if s>max then
    max:=s;
    end;
end;

begin
assign(f,'flip.in');
reset(f);
assign(g1,'flip.out');
rewrite(g1);
read(f,n,m);
for i:=1 to n do
    for j:=1 to m do
        read(f,a[i,j]);
lsadf;
writeln(g1,max);
close(f);
close(g1);
end.