Cod sursa(job #284929)

Utilizator andrici_cezarAndrici Cezar andrici_cezar Data 22 martie 2009 08:20:01
Problema Jocul Flip Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.31 kb
var f,g:Text;
    suma,i,j,n,m,z,max:longint;
    a:array[1..16,1..16]of longint;
    ok:boolean;
    l,c:array[1..16]of longint;
procedure testare;
          var ok1,ok2:boolean;
          begin
          ok1:=false;
          ok2:=false;
          for i:=1 to m do
              if c[i]<0 then ok1:=true;
          for i:=1 to n do
              if l[i]<0 then ok2:=true;
          if (ok1)or(ok2) then ok:=true
          else ok:=false;
          end;
begin
assign(f,'flip.in');reset(f);
assign(g,'flip.out');rewrite(g);
readln(F,n,m);
for i:=1 to n do
	for j:=1 to m do
		read(f,a[i,j]);
ok:=true;
while ok do
	begin
	for i:=1 to n do
		for j:=1 to m do
		l[i]:=l[i]+a[i,j];
max:=0;
	for i:=1 to n do
		if (l[i]<max)and(l[i]<0) then begin
					max:=l[i];
					z:=i;
                                        end;
	for j:=1 to m do
		a[z,j]:=a[z,j]*-1;
max:=0;
	for j:=1 to m do
		for i:=1 to n do
		c[j]:=c[j]+a[i,j];
		for i:=1 to m do
		if (c[i]<max)and(c[i]<0) then begin
		max:=c[i];
		z:=i;
                end;
	for i:=1 to n do
		a[i,z]:=a[i,z]*-1;
		
	for i:=1 to n do
		for j:=1 to m do
		l[i]:=l[i]+a[i,j];
	for j:=1 to m do
		for i:=1 to n do
		c[j]:=c[j]+a[i,j];
	testare;
	end;
for i:=1 to n do
    for j:=1 to m do
	suma:=suma+a[i,j];
writeln(g,suma);
close(g);
end.