Cod sursa(job #1325097)

Utilizator andrei_r_97Radoi Andrei andrei_r_97 Data 23 ianuarie 2015 11:29:05
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <stdlib.h>

int m, n, s_max = -1;
int mat[16][16], v[16];

int abs(int x) { return x > 0 ? x : (-1) *x; }
int max(int a, int b) { return a > b ? a : b; }

void sum() {
    int i, j, s, suma = 0;
    for ( j = 0; j < m; j++ ) {
        s = 0;
        for ( i = 0; i < n; i++ )
            s += mat[i][j] * v[i];
        suma += abs(s);
    }
    s_max = max(suma,s_max);
}

void flip(int k) {
    if ( k == n )
        sum();
    else {
        v[k] = -1;
        flip(k+1);
        v[k] = 1;
        flip(k+1);
    }
}

int main()
{
    FILE *in = fopen("flip.in","r");
    FILE *out = fopen("flip.out","w");

    fscanf(in,"%d %d",&n,&m);
    int i, j;
    for ( i = 0; i < n; i++ )
        for ( j = 0; j < m; j++ )
            fscanf(in,"%d",&mat[i][j]);
    flip(0);
    fprintf(out,"%d",s_max);

    return 0;
}