Cod sursa(job #163744)

Utilizator g_petricagabriel petrica g_petrica Data 23 martie 2008 04:55:52
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream.h>
int n, m;
unsigned long a[17][17];
void citire()
 {
  int i, j;
  ifstream fin("flip.in");
  fin>>n>>m;
  for(i=1;i<=n;i++)
   for(j=1;j<=m;j++)
    fin>>a[i][j];

  }
void main()
 {
  citire();
  int p=1, i, j, pp, min;
  long l[17], c[17];
  ofstream fout("flip.out");

    for(i=1;i<=n;i++)
     {
      l[i]=0;
     for(j=1;j<=m;j++)
	l[i]=l[i]+a[i][j];
     }

    for(i=1;i<=m;i++)
     {
      c[i]=0;
     for(j=1;j<=n;j++)
      c[i]=c[i]+a[j][i];
     }

    while(p)
     {
     p=0;
    min=l[1];
    for(i=2;i<=n;i++)
     if(l[i]<0 && l[i]<min)
       { min=l[i];
	p=i;
       }
    pp=0;
    for(i=1;i<=m;i++)
     if(c[i]<0 && c[i]<min)
      {
       min=c[i];
       pp=1;
       p=i;
      }
    if(pp==0)
     {
      l[p]=-l[p];
      for(i=1;i<=m;i++)
      {
	a[p][i]=-a[p][i];
	c[i]=c[i]+2*a[p][i];
      }
     }
    else
     {
      c[p]=-c[p];
     for(i=1;i<=n;i++)
      {
       a[i][p]=-a[i][p];
       l[i]=l[i]+2*a[i][p];
      }
     }
   }
  int s=0;
  for(i=1;i<=n;i++)
   for(j=1;j<=m;j++)
    s=s+a[i][j];
  fout<<s;
 }