Pagini recente » Cod sursa (job #957845) | Cod sursa (job #2388136) | Cod sursa (job #1041315) | Cod sursa (job #1368683) | Cod sursa (job #105171)
Cod sursa(job #105171)
type MATRICE = array[1..16, 1..16] of longint;
var n,m : byte;
A : MATRICE;
smax : longint;
{procedure Afisare(A:MATRICE);
var i,j:byte;
begin
for i:=1 to n do
begin
for j:=1 to m do Write(A[i,j]:3);
Writeln;
end;
end;}
function Pow(n,p:byte):longint;
begin
if p=0 then Pow:=1 else Pow := n * Pow(n,p-1);
end;
procedure Citire;
var f : text; i,j:byte;
begin
Assign(f,'flip.in'); Reset(f);
Readln(f,n,m);
for i:=1 to n do for j:=1 to m do Read(f,a[i,j]);
Close(f);
end;
procedure DecToBin(x : longint; var s : string);
begin
s:='';
while x <> 0 do
begin
case x mod 2 of
0 : s:='0'+s;
1 : s:='1'+s;
end;
x := x div 2;
end;
end;
function DoSum(A:MATRICE; si, sj:string):longint;
var i,j:byte; s:longint;
begin
for i:=1 to n do
case si[i] of
'1' : for j:=1 to m do A[i,j]:=-A[i,j];
end;
for j:=1 to m do
case sj[j] of
'1' : for i:=1 to n do A[i,j]:=-A[i,j];
end;
{Writeln('Ca sa fac suma >'); Afisare(A);}
s:=0;
for i:=1 to n do for j:=1 to m do s:=s+A[i,j];
DoSum := s;
end;
procedure Solve(lmax, cmax:longint);
var i,j:longint; si, sj:string; x : byte;
suma : longint;
begin
smax := -maxlongint;
for i:=0 to lmax-1 do
for j:=0 to cmax-1 do
begin
DecToBin(i,si); DecToBin(j,sj);
for x:=length(si)+1 to n do si:='0'+si;
for x:=length(sj)+1 to m do sj:='0'+sj;
{Afisare(A); Writeln(si,'-------',sj);}
suma := DoSum(A, si, sj);
if suma > smax then smax := suma;
{write(suma); readln;}
end;
end;
var f : text;
begin
Citire;
Solve(Pow(2,n), Pow(2,m));
Assign(f,'flip.out'); ReWrite(f); Writeln(f,smax); Close(f);
end.