Cod sursa(job #2425433)

Utilizator Ionut_BogoiBogoi Ionut Ionut_Bogoi Data 24 mai 2019 20:17:44
Problema Jocul Flip Scor 40
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <stdio.h>
#include <stdlib.h>
int sum(int **a,int N,int M,int *v)
{
    int i,j,s=0;
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            if(v[i] ^ v[N+M-j-1])
                s=s-a[i][j];
            else
                s=s+a[i][j];
        }
    }
    return s;
}

void sumMax(int **a,int *v,int N,int M,int k,int *max)
{
    int n=M+N-1,i,j,s;
    for(i=0;i<=1;i++)
    {
        v[k]=i;
        if(k==n)
        {
            s=sum(a,N,M,v);
            if(s > (*max))
            {
                *max=s;
            }
        }
        else
        {
            sumMax(a,v,N,M,k+1,max);
        }
    }
}

int main()
{
    int N,M,i,j,**a,*v;
    FILE *f,*g;
    f=fopen("flip.in","r");
    g=fopen("flip.out","w");
    fscanf(f,"%d%d",&N,&M);
    a=(int**)malloc(N*sizeof(int*));
    for(i=0;i<N;i++)
    {
        a[i]=(int*)malloc(M*sizeof(int));
    }
    v=(int*)malloc((M+N)*sizeof(int));
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            fscanf(f,"%d",&(a[i][j]));
        }
    }
    int max=0;
    sumMax(a,v,N,M,0,&max);
    fprintf(g,"%d",max);

    for(i=0;i<N;i++)
    {
        free(a[i]);
    }
    free(a);
    free(v);
    fclose(f);
    fclose(g);
    return 0;
}