Nu aveti permisiuni pentru a descarca fisierul grader_test1.ok
Cod sursa(job #554069)
Utilizator | Data | 14 martie 2011 16:22:43 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 100 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 1.49 kb |
program flip;
var m,n,i,j:byte;
f:text;
a:array[1..16,1..16] of longint;
smax:longint;
function suma:longint;
var i,j:byte;
s:longint;
begin
s:=0;
for i:=1 to n do
for j:=1 to m do
s:=s+a[i,j];
suma := s;
end;
function suma_col(nrc:byte):longint;
var i:byte;
s:longint;
begin
s:=0;
for i:=1 to n do
s:=s+a[i,nrc];
suma_col:=s;
end;
procedure flipcoloana(j:byte);
var i:byte;
begin
for i:=1 to n do
a[i,j]:=-1*a[i,j];
end;
procedure fliplinie(i:byte);
var j:byte;
begin
for j:=1 to m do
a[i,j]:=-1*a[i,j];
end;
procedure back(i: byte);
var j,p,k:byte;
s,scol:longint;
begin
if i = n+1 then
begin
s := 0;
for p := 1 to m do
begin
scol := suma_col(p);
if scol < 0 then
begin
flipcoloana(p);
scol := -scol;
end;
s := s + scol;
end;
if s>smax then
smax:=s;
end
else
for k := 1 to 2 do
if k = 1 then
begin
fliplinie(i);
back(i+1);
fliplinie(i);
end
else
back(i+1);
end;
begin
assign(f,'flip.in');
reset(f);
readln(f,n,m);
for i := 1 to n do
begin
for j := 1 to m do
read(f,a[i,j]);
readln(f);
end;
close(f);
smax:=0;
back(1);
assign(f,'flip.out');
rewrite(f);
writeln(f,smax);
close(f);
end.