Cod sursa(job #27707)

Utilizator MipiCornea Mihai Mipi Data 6 martie 2007 23:20:00
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 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 flipuieste()
{
 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;
}

void back(int k)
{
 if(k>n)flipuieste();
 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;
}