Cod sursa(job #52569)

Utilizator info_arrandrei gigea info_arr Data 19 aprilie 2007 11:47:02
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
using namespace std;
#include<stdio.h>
#define nmax 18
#define infinit 10000000

FILE *fin=fopen("flip.in","r"),
     *fout=fopen("flip.out","w");

int a[nmax][nmax];

int main()
{
    int n,m,i,j;
    fscanf(fin,"%d%d\n",&n,&m);
    for (i=1; i<=n; i++)
     for (j=1; j<=m; j++)
       fscanf(fin,"%d",&a[i][j]);
    int x,sol,scol,sum;
    sol = -infinit;
    for (x=0; x<(1<<n); x++)
     {
       for (i=1; i<=n; i++)
	if ((1<<(i-1))&x)
	 for (j=1; j<=m; j++)
	  a[i][j]=-a[i][j];

       sum=0;
       for (j=1; j<=m; j++)
	{
	 scol=0;
	 for (i=1; i<=n; i++)
	  scol+=a[i][j];
         if (scol>0) sum+=scol;
          else sum-=scol;
          }
        if (sum>sol) sol=sum;
        
       for (i=1; i<=n; i++)
        if ((1<<(i-1))&x) 
         for (j=1; j<=m; j++)
          a[i][j]=-a[i][j]; 
      }
 fprintf(fout,"%d",sol);
 fclose(fin);
 fclose(fout);
return 0;
}