Cod sursa(job #1150455)

Utilizator accxelAlex Carp accxel Data 23 martie 2014 00:25:26
Problema Jocul Flip Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#include <stdlib.h>

int M[16][16], aux[32];
int n, m, s, smax;


void citesteMat(FILE *f)
{
	for(int i=0; i<n; i++)
		for(int j=0; j<m; j++)
        {
			fscanf(f, "%d", &M[i][j]);
            s+=M[i][j];
        }
	return;
}

int comuta(int id)
{
	int sum=0;
    if(id<n)
        for(int i=0; i<m; i++)
        {
            sum+=M[id][i];
            M[id][i]*=-1;
        }
    else
        for(int i=0; i<n; i++)
        {
            sum+=M[i][id-n];
            M[i][id-n]*=-1;
        }
    s-=2*sum;
	return sum;
}

void back(int k)
{
    if(k==n+m)
        {
            if(s>smax) smax=s;
        }
    else
    {
        back(k+1);
        comuta(k);
        back(k+1);
    }
    return;
}

int main()
{
	FILE *fi, *fo;
	fi=fopen("flip.in", "r");
	fo=fopen("flip.out", "w");
	fscanf(fi, "%d %d", &n, &m);
	citesteMat(fi);
    smax=s;
    back(0);
	fprintf(fo, "%d", smax);
    fclose(fi);
    fclose(fo);
	return 0;
}