Cod sursa(job #1438931)

Utilizator cristyshor_cCosulianu Cristi Mihail cristyshor_c Data 21 mai 2015 09:45:41
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.84 kb
#include <fstream>
using namespace std;
FILE *f=fopen("flip.in","r");
FILE *g=fopen("flip.out","w");
int x[420]={0};
int n=0,m=0,a[50][50],suma=0,i=0,j=0,maxim=-256000010;
int cont(int k)
{
    return 1;
}
int solutie(int k)
{
    if(k==n)
        return 1;
    else
        return 0;
}
int tipar(int k)
{
    int suma=0,sumal;
    for(i=1;i<=n;i++)
    {
        for(sumal=0,j=1;j<=n;j++)
        {
            if(x[j]==1)
                sumal+=a[i][j];
            else
                sumal-=a[i][j];
        }

        if(sumal<0)
            sumal=-sumal;
        suma+=sumal;
    }
    if(suma>maxim)
    {
        maxim=suma;
    }
    return maxim;
}
void bkt()
{
    int k;
    k=1;
    x[k]=-1;
    while(k>0)
    {
        if(x[k]<1)
        {
            x[k]++;
            if(cont(k))
            {
                if(solutie(k))
                    maxim=tipar(k);
                else
                {
                    k++;
                    x[k]=-1;
                }
            }
        }
        else
        {
            k--;
        }
    }
}
int main()
{
    fscanf(f,"%d%d",&n,&m);
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        fscanf(f,"%d",&a[i][j]);
    bkt();
    /*
    for(i=1;i<=n;i++)
    {
        if(v[i]==1)
            for(j=1;j<=m;j++)
                a[i][j]=0-a[i][j];
    }
    for(i=1;i<=m;i++)
    {
        s[i]=0;
        for(j=1;j<=n;j++)
        {
            s[i]=s[i]+a[j][i];
        }
    }
    bkt(m,0);
    for(i=1;i<=m;i++)
    {
        if(v[i]==1)
            for(j=1;j<=n;j++){
                a[j][i]=0-a[j][i];
                suma=suma+a[j][i];
            }
        else
            for(j=1;j<=n;j++){
                suma=suma+a[j][i];
            }
    }*/
    fprintf(g,"%d",maxim);
    return 0;
}