Cod sursa(job #902545)

Utilizator Pop_EmilPal Tamas Pop_Emil Data 1 martie 2013 14:53:30
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>

using namespace std;

int N,M,t[17][17];
long RES=0;

void _read()
{
 freopen("flip.in","r",stdin);
 freopen("flip.out","w",stdout);

 scanf("%d %d",&N,&M);

 for(int i=0;i<N;i++)
  for(int j=0;j<M;j++)
    scanf("%d",&t[i][j]);
}

void flipcol(int m)
{
    for(int i=0;i<N;i++)
      t[i][m]*=-1;
}
void fliprand(int n)
{
    for(int j=0;j<M;j++)
     t[n][j]*=-1;

}

int sumcol(int m)
{
   long s=0;
    for(int i=0;i<N;i++)
      s+=t[i][m];
    return s;
}

int sumrand(int n)
{
    long s=0;
    for(int j=0;j<M;j++)
     s+=t[n][j];
   return s;
}

int main()
{

_read();

bool modif=true;

while(modif)
 {
   modif=false;

   for(int j=0;j<M;j++)
      {
         if(sumcol(j)<0){ flipcol(j); modif=true; }
      }

 for(int i=0;i<N;i++)
      {
         if(sumrand(i)<0){ fliprand(i); modif=true; }
      }

 }

 for(int j=0;j<M;j++)
    RES+=sumcol(j);

  printf("%ld",RES);

return 0;
}