Cod sursa(job #2685219)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 16 decembrie 2020 12:56:01
Problema Jocul Flip Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>
#define MAX_N 16
int mat[MAX_N][MAX_N], coefLin[MAX_N];
int n, m, maxSum;
int sumaMat() {
    int sumaTot, sumaCol, l, c;
    sumaTot = 0;
    for( c = 0; c < m; c++ ) {
        sumaCol = 0;
        for( l = 0; l < n; l++ )
            sumaCol += mat[l][c] * coefLin[l];
        sumaTot = sumaTot + (sumaCol > 0 ? sumaCol : -sumaCol );
    }
    return sumaTot;
}
void flip( int lin ) {
    int s, coef;
    if ( lin == n ) {
        s = sumaMat();
        maxSum = s > maxSum ? s : maxSum;
    } else {
        for ( coef = -1; coef <= 1; coef += 2 ) {
            coefLin[lin] = coef;
            flip( lin + 1 );
        }
    }
}
int main() {
    FILE *fin, *fout;
    int l, c;
    fin = fopen( "flip.in", "r" );
    fscanf( fin, "%d%d", &n, &m );
    for ( l = 0; l < n; l++ ) {
        for ( c = 0; c < m; c++ )
            fscanf( fin, "%d", &mat[l][c] );
    }
    fclose( fin );
    maxSum = 0;
    flip( 0 );
    fout = fopen( "flip.out", "w" );
    fprintf( fout, "%d", maxSum );
    fclose( fout );
    return 0;
}