Cod sursa(job #40882)

Utilizator mariaciPopa Marius Ionut mariaci Data 27 martie 2007 20:15:11
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream.h>
#include<limits.h>
#define InFile "flip.in"
#define OutFile "flip.out"
#define Max 18
long a[Max][Max];
int n,m;
void citire()
{ ifstream f(InFile);
  f>>n>>m;
  int i,j;
  for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
       f>>a[i][j];
  f.close();
}
int suma(long l[Max][Max])
{ int i,j,s=0;
  for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
      s=s+l[i][j];
  return s;
}
void prelucrare()
{ int i,j,x1=0,x2=0;
  long min1,min2,s=0,s1;
  min1=min2=LONG_MAX;
  s1=LONG_MIN;
  if(suma(a)>s1) s1=suma(a);
  for(i=1;i<=n;i++)
    { s=0;
      for(j=1;j<=m;j++)
	  s=s+a[i][j];
      if(s<min1 && s<0)
	   { min1=s;
	     x1=i;
	   }
    }
  for(i=1;i<=m;i++)
    { s=0;
      for(j=1;j<=n;j++)
	  s=s+a[j][i];
      if(s<min2 && s<0)
	  { min2=s;
	    x2=i;
	  }
    }
  s=0;
  for(i=1;i<=m;i++)
     a[x1][i]=-a[x1][i];
  if(suma(a)>s1) s1=suma(a);
  for(i=1;i<=n;i++)
     a[i][x2]=-a[i][x2];
  if(suma(a)>s1) s1=suma(a);
  ofstream g(OutFile);
  g<<s1;
  g.close();
}
int main()
{ citire();
  prelucrare();
  return 0;
}