Cod sursa(job #757578)

Utilizator bratualexBratu Alexandru bratualex Data 12 iunie 2012 18:17:31
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>

using namespace std;

ifstream fin ( "flip.in");
ofstream fout ( "flip.out");

void back (int,int,int,int);
void testare ( int,int);
//void afisare ( int );
//void afisare1 ( int );
int maxim,s[50],sl[50],sc[50],a[16][16],cm=0;
int main()
{
    int n,m,i,j;
    fin>>n>>m;
    for (i=0;i<n;i++)
        for (j=0;j<m;j++)
        {
            fin>>a[i][j];
            sl[i]=sl[i]+a[i][j];
        }
    for ( i=0;i<m;i++ )
        for (j=0;j<n;j++ )
        {
            sc[i]=sc[i]+a[j][i];
        }

    back(0,n+m,n,m);
    //afisare ( cm );

    fout<<maxim;
    fin.close();
    fout.close();
    return 0;
}

void back (int k, int n, int x ,int y)
{
    int i=0;
    for ( i=-1;i<=1;i++)
    {
        if (i!=0)
        {


            s[k]=i;
            if ( k==x+y-1 )
            {
                //afisare1 (n);
                testare(x,y);
                //fout<<" diug\n";
            }
            else
                back(k+1,n,x,y);
        }
    }
}

void testare ( int k, int p )
{
    int i,j,maxi=0;
    for ( i=0;i<k;i++)
        for ( j=0;j<p;j++)
            maxi=maxi+s[i]*s[k+j]*a[i][j];
    if ( maxi>maxim)
        maxim=maxi;
}