Cod sursa(job #116819)

Utilizator Poisoned_IvyAnda Nicolae Poisoned_Ivy Data 19 decembrie 2007 17:43:40
Problema Jocul Flip Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <stdio.h>
#include <malloc.h>

int i,j,m,n,p=0;
double max;
double **a;
int *x;
FILE *f, *g;


void prelSol()
{
    int i;
    double s=0;
    
    s=0;
    for (i=0; i<n; i++)
        for (j=0; j<m; j++)
            if (x[i]!=x[n+j]) s+=(-1)*a[i][j];
            else s+=a[i][j];
    
    if (s>max) 
    {
       max=s;
    }
}


void back()
{
     int k;
     for (k=0; k<m+n; k++)
         x[k]=-1;
     k=0;
     while (k>=0)
           if (k==n+m)
           {
              prelSol();
              k--;
           }
           else if (x[k]<1)
           {
                x[k]++;
                k++;
           }
           else
           {
               x[k]=-1;
               k--;
           }
}


int main()
{
//    FILE *f, *g;
    max=0;
    f=fopen("flip.in","r");
    fscanf(f,"%d %d",&n, &m);
    x=(int*) malloc ((m+n)*sizeof(int));
    
    a=(double**) malloc (n*sizeof(double));
    for (i=0; i<n; i++)
        a[i]=(double*) calloc (m,sizeof(double));

    for (i=0; i<n; i++)
        for (j=0; j<m; j++)
            fscanf(f,"%lf",&a[i][j]);
    g=fopen("flip.out","w");
    back();
    fprintf(g,"%lf",max);
    return 0;
}