Cod sursa(job #27835)

Utilizator MipiCornea Mihai Mipi Data 7 martie 2007 09:55:58
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream.h>

ifstream f("flip.in");
ofstream g("flip.out");

float t[20][20];
int m,n,st[20];
long long s=-500000;

void citire()
{
 int i,j;
 f>>m>>n;
 for(i=1;i<=m;i++)
  for(j=1;j<=n;j++)
   f>>t[i][j];
 f.close();
}
void back(int k)
{
 if(k>n)
 {
  int i,j;
  long long sn=0,sp=0,stot=0;
  stot=0;
  for(i=1;i<=m;i++)
  {
   sn=sp=0;
    for(j=1;j<=n;j++)
     if((t[i][j]*st[j])<0)sn+=-t[i][j]*st[j];
     else sp+=t[i][j]*st[j];
   if(sp<sn)stot+=sn-sp;
   else stot+=sp-sn;
  }
  if(stot>s)s=stot;
 }
 else
  for(int i=1;i>=-1;i-=2)
  {
   st[k]=i;
   back(k+1);
  }
}

void transpunere()
{
 int i,j;
 float aux[20][20];
 for(i=1;i<=m;i++)
  for(j=1;j<=n;j++)
  aux[i][j]=t[i][j];
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
   t[i][j]=aux[j][n-i+1];
}

int main()
{
 citire();
 if(n>m)
 {
  transpunere();
  int aux;
  aux=n;
  n=m;
  m=aux;
 }
 back(1);
 g<<s;
 g.close();
 return 0;
}