Cod sursa(job #530937)

Utilizator pop_ionutPop DanIonut pop_ionut Data 8 februarie 2011 18:06:11
Problema Jocul Flip Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.38 kb
type tip = array[1..20,1..20] of integer;
var
 a:tip;
 c:char;
 i,j,n,m,sum:integer;
 f:text;
 {------------------------------------}
 function sumc(data:tip;ic:integer):integer;
 var jc:integer;
 begin
 sumc:=0;
 for jc := 1 to m do
 sumc:=sumc+a[ic,jc];
 {insumarea unei coloanei ic}
 end;
 {-------------------------}
 function sumr(data:tip;jc:integer):integer;
 var ic:integer;
 begin
 sumr:=0;
 for ic:= 1 to n do
 sumr:= sumr+data[ic,jc];
 {insumarea randului ic}
 end;
 {------------------------}
procedure flipc(ic:integer);
var jc:integer;
begin
for jc:= 1 to m do
a[ic,jc]:= (-1)*a[ic,jc];
end;
{---------}
procedure flipr(jc:integer);
var ic:integer;
begin
for ic:= 1 to n do
a[ic,jc]:=(-1)*a[ic,jc];
end;
{---------}
var
ok:boolean;
AUX:INTEGER;
g:text;
{|||||||||||||||||||||||||||||
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv}
begin
sum:=0;
writeln('vezi asta?');
assign(f,'flip');
reset(f);
read(f,m);

readln(f,n);

for j := 1 to m do
 begin
 for i:= 1 to n do
  begin
  read(f,a[i,j]);
  sum:= sum+ a[i,j];
  end;
 readln(f);
 end;

repeat
ok := true;
for i := 1 to n do
 begin
 aux := sumc(a,i);
 if aux<0 then
  begin
  sum:= sum- (2*aux);
  ok:=false;
  flipc(i);
  end;
 end;
for j:= 1 to m do
 begin
 aux:= sumr(a,j);
 if aux<0 then
  begin
  sum := sum- (2*aux);
  ok:= false;
  flipr(j);
  end ;
 end;
until ok;
  close(f);

 assign(g,'flip.out');
 rewrite(g);
 write(g,sum);
 close(g);


end.