Cod sursa(job #142994)

Utilizator uta_cristianUta Cristian uta_cristian Data 25 februarie 2008 19:45:27
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include<fstream>
using namespace std;
//#include<iomanip.h>
ifstream f("flip.in");
ofstream g("flip.out");
int n,m,mat[5][3],mm[5][3],s[10];
void citire()
 {f>>n>>m;
  int i,j;
   for (i=0;i<n;i++)
    for (j=0;j<m;j++)
     f>>mat[i][j];
 }
void afisare()
 {int i;
   for (i=0;i<m;i++)
    g<<s[i]<<" ";
  g<<endl;
 }
void flip(int max)
 {int i,j;
   for (i=0;i<m;i++)
    if (s[i]==2)
     for (j=0;j<n;j++)
      mm[j][i]=-mat[j][i];
    else
     for (j=0;j<n;j++)
      mm[j][i]=mat[j][i];
  /* for (i=m;i<m+n;i++)
    if (s[i]==2)
     for (j=0;j<m;j++)
      mm[i][j]=-mat[i][j];
    else
     for (j=0;j<m;j++)
      mm[i][j]=mat[i][j];
  */
  int sum;
   for (i=0;i<n;i++)
    {sum=0;
      for (j=0;j<m;j++)
       sum+=mm[i][j];
     if (sum<0)
      for (j=0;j<m;j++)
       mm[i][j]=-mm[i][j];
    }
  sum=0;
   for (i=0;i<n;i++)
    for (j=0;j<m;j++)
     sum+=mm[i][j];
  if (sum>max) max=sum;
/*
  for (i=0;i<m;i++)
   g<<s[i]<<" ";
  g<<endl;
  for (i=0;i<n;i++)
   {for (j=0;j<m;j++)
     g<<setw(3)<<mm[i][j];
    g<<endl;
   }
  g<<endl;
*/
 }
void back(int max)
 {int k=0;
  s[k]=0;
   while (k>=0)
    if (s[k]<2)
     {s[k]++;
       if (k==m-1) flip(max);
       else s[++k]=0;
     }
    else k--;
 }
int main()
{
citire();
int max=-32000;
back(max);




g<<max;
/*
int i,j;
 for (i=0;i<n;i++)
  {for (j=0;j<m;j++)
    g<<mat[i][j]<<" ";
   g<<endl;
  }
*/
return 0;
}