Cod sursa(job #33251)

Utilizator CephasGherasim Tudor Cephas Data 19 martie 2007 01:22:19
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream.h>
#include <stdio.h>
int n,m,mat[32][32];

void comutare(int tip,int linie){
 int i;
 if(tip==1){
   for(i=1;i<=m;i++) mat[linie][i]*=-1;
 }
 else for(i=1;i<=n;i++) mat[i][linie]*=-1;
}

int main()
{
   freopen("flip.in","r",stdin);
   freopen("flip.out","w",stdout);
  scanf("%d %d",&n,&m);
  int i,j,S=0;
  for(i=1;i<=n;i++)
   for(j=1;j<=m;j++){
    scanf("%d",&mat[i][j]);
    S+=mat[i][j];
   }
  int comut=1,sum1=0,sum2=0;
  int val=1;
  while(val){
    if(comut==1){
     for(i=1;i<=m;i++){
      sum1=sum2=0;
      for(j=1;j<=n;j++)
	if(mat[i][j]<0) sum1+=mat[i][j];
	else sum2+=mat[i][j];
      if(sum1<(sum2*(-1))) {comutare(2,i);comut=2;}
     }
     if(comut) val=1;
     else val=0;
    }
    else{
     for(i=1;i<=n;i++){
      sum1=sum2=0;
      for(j=1;j<=m;j++)
	if(mat[i][j]<0) sum1+=mat[i][j];
	else sum2+=mat[i][j];
      if(sum1<(sum2*(-1))) {comutare(1,i);comut=1;}
     }
     if(comut) val=1;
     else val=0;
    }
  }

  for(i=1;i<=n;i++)
   for(j=1;j<=m;j++)
     S+=mat[i][j];

  printf("%d",S);
  return 0;
}