Cod sursa(job #2427486)

Utilizator PrekzursilAndrei Visalon Prekzursil Data 31 mai 2019 22:39:02
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 1.45 kb
#include<bits/stdc++.h>

int sum(int **a,int *v,int N,int M)
{
    int i,j,s=0,sp;
    for(j=0;j<M;j++)
    {
        sp=0;
        for(i=0;i<N;i++)
        {
            if(v[i]==0)
            {
                sp=sp+a[i][j];
            }
            else
            {
                sp=sp-a[i][j];
            }
        }
        if(sp>0)
        {
            s=s+sp;
        }
        else
        {
            s=s-sp;
        }
    }
    return s;
}

void sumMax(int **a,int *v,int N,int M,int k,int *max)
{
    int i,n=N-1,s;
    for(i=0;i<=1;i++)
    {
        v[k]=i;
        if(k==n)
        {
            s=sum(a,v,N,M);
            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*));
    v=(int*)malloc(N*sizeof(int*));
    for(i=0;i<N;i++)
    {
        a[i]=(int*)malloc(M*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;
}