Cod sursa(job #31699)

Utilizator dorinelburiceanu dorin gabriel dorinel Data 16 martie 2007 13:59:35
Problema Jocul Flip Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.28 kb
program flip ;
type matrice=array[0..16,0..16] of longint;
var f,g :text;
    tabla:matrice;
 		m,n,i,j,lmin,cmin:integer;

function minim(var l,c:integer):boolean;
var i,min:longint;
begin
min:=maxlongint;
for i:= 1 to n do
	if tabla[i,0]<min then
  	begin
    l:=i;
    c:=0;
    min:=tabla[i,0];
    end;
for i:= 1 to m do
	if tabla[0,i]<min then
  	begin
    l:=0;
    c:=i;
    min:=tabla[0,i];
    end;
if min<0 then
	minim:=true
else
	minim:=false;
end;


procedure permuta_linie_coloana(l,c:integer);
var i:integer;
begin
if l=0 then
  begin
    writeln('c=',c);


  for i:=0 to n do
  	begin
    tabla[i,c]:=-tabla[i,c];
    tabla[i,0]:=tabla[i,0] +2*tabla[i,c];
    end
	end

else
  begin
    writeln('l=',l);
	for i:=0 to m  do
  	begin
    tabla[l,i]:=-tabla[l,i];
    tabla[0,i]:=tabla[0,i] +2*tabla[l,i];
    end;
    end
end;



begin
assign(f,'flip.in');
reset(f);
read(f,n,m);
for i:= 1 to n  do
	for j:= 1 to m do
	  begin
	 	read(f,tabla[i,j]);
    tabla[0,j]:= tabla[0,j]+tabla[i,j];
    tabla[i,0]:=tabla [i,0]+tabla[i,j];
    tabla[0,0]:=tabla [0,0]+tabla[i,j];
  	end;
close(f);
while minim(lmin,cmin) do
	permuta_linie_coloana(lmin,cmin);
assign(g,'flip.out');
rewrite(g);
write(g,tabla[0,0]);
close(g);
end.