Cod sursa(job #680944)

Utilizator djgaby128Suciu Remus Gabriel djgaby128 Data 16 februarie 2012 10:46:55
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.61 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f;
ofstream g;
long a[16][16]; //fuchs optimizare * prima data sa mearga programul :)) !
int n,m,i,j;
int k,cc,maxim;



void afisare()
{
 for(i=1;i<=n;i++)
 {
        for(j=1;j<=m;j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
 }

}
void comutal(int l)
{
    int j;
        for(j=1;j<=m;j++)
            a[l][j]=-a[l][j];
}
void comutac(int c)
{
    int i;
    for(i=1;i<=n;i++)
             a[i][c]=-a[i][c];
}
long sumal(int l)
{
    long s=0;
    int j;
        for(j=1;j<=m;j++)
            s=s+a[l][j];
    return s;
}
long sumac(int c)
{
     long s=0;
     int i;
    for(i=1;i<=n;i++)
             s=s+a[i][c];
    return s;

}

int sumat()
{
    int csuma=0;
  //  afisare();
    for(i=1;i<=n;i++)
    {
        csuma+=sumal(i);
    }
    return csuma;
}

void back()
{

  for(int i=1;i<=n;i++)
    {
        comutal(i);
        for(k=i+1;k<=n;k++)
        {
           comutal(k);
            if(maxim<sumat())
              maxim=sumat();
        }

    for(int j=1;j<=m;j++)
             {
                 comutac(j);
                if(maxim<sumat())
                    maxim=sumat();
                for(cc=1;cc<=m;cc++)
                {
                  comutac(cc);
                if(maxim<sumat())
                    maxim=sumat();
                }
             }

    }


 for(int j=1;j<=m;j++)
             {
                 comutac(j);
                if(maxim<sumat())
                    maxim=sumat();
                for(cc=1;cc<=m;cc++)
                {
                  comutac(cc);
                if(maxim<sumat())
                    maxim=sumat();
                }
              for(int i=1;i<=n;i++)
                {
                    comutal(i);
                    for(k=i+1;k<=n;k++)
                    {
                       comutal(k);
                        if(maxim<sumat())
                          maxim=sumat();
                    }
                }
             }

   for(k=1;k<=n*m;k++)
  for(j=1;j<=m;j++)
    {
    comutac(j);
    if(maxim<sumat())
        maxim=sumat();
    for(i=1;i<=n;i++)
             {
                 comutal(i);
                if(maxim<sumat())
                    maxim=sumat();

             }

    }

 for(int k=1;k<=n*m;k++)
  for(int i=1;i<=n;i++)
    {
    comutal(i);
    if(maxim<sumat())
        maxim=sumat();
    comutal(i);
    if(maxim<sumat())
        maxim=sumat();
    for(int j=1;j<=m;j++)
             {
                 comutac(j);
                if(maxim<sumat())
                    maxim=sumat();
                 comutac(j);
                if(maxim<sumat())
                    maxim=sumat();
             }

    }

   for(k=1;k<=n*m;k++)
  for(j=1;j<=m;j++)
    {
    comutac(j);
    if(maxim<sumat())
        maxim=sumat();
    comutac(j);
    if(maxim<sumat())
        maxim=sumat();
    for(i=1;i<=n;i++)
             {
                 comutal(i);
                if(maxim<sumat())
                    maxim=sumat();
                 comutal(i);
                if(maxim<sumat())
                    maxim=sumat();

             }

    }
}

int main()
{
    long csuma=0;
    // citirea //
    f.open("flip.in");
    f>>n>>m;

        for(i=1;i<=n;i++)
        {
         for(j=1;j<=m;j++)
         {
             f>>a[i][j];
         }
        }
    back();
    // nu stiu daca am inteles ideea jocului
    // sa speram ca e ce terbuie :)
 //   afisare();


    g.open("flip.out");
    g<<maxim;


}