Cod sursa(job #2034351)

Utilizator ruxi.icleanuRuxandra Icleanu ruxi.icleanu Data 7 octombrie 2017 18:53:30
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#include <stdlib.h>

#define MAXN 16
#define INF 256000000

int a[MAXN][MAXN];
int s_lin[MAXN], adg[MAXN];

int main()
{
    int n, m, i, j, nr, max, sum, lin, col, val;

    FILE *fi, *fo;
    fi = fopen("flip.in", "r");
    fo = fopen("flip.out", "w");

    fscanf(fi, "%d%d", &n, &m);
    for(i=0; i<n; i++)
        for(j=0; j<m; j++) {
            fscanf(fi, "%d", &a[i][j]);
            s_lin[i]+=a[i][j];
        }

    nr=1<<m;
    max=-INF;

    for(i=0; i<nr; i++) {
        for(col=0; col<m; col++)
            if(i&(1<<col))
                for(lin=0; lin<n; lin++)
                    adg[lin]-=2*a[lin][col];

        sum=0;
        for(lin=0; lin<n; lin++) {
            val=s_lin[lin]+adg[lin];
            sum+=(val>0 ? val : -val);
        }

        if(sum>max)
            max=sum;

        for(lin=0; lin<n; lin++)
            adg[lin]=0;
    }
    fprintf(fo, "%d", max);

    fclose(fi);
    fclose(fo);
    return 0;
}