Cod sursa(job #1150621)

Utilizator accxelAlex Carp accxel Data 23 martie 2014 13:17:47
Problema Jocul Flip Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <stdlib.h>

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


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];
		}
}

void sumMat()
{
	s=0;
	int sumlin;
	for(int i=0; i<n; i++)
	{
		sumlin=0;
		for(int j=0; j<m; j++)
			sumlin+=M[i][j]*aux[j];
		s+=abs(sumlin);
	}
    return;
}

void back(int k)
{
    int flag=0;
	if(k==m)
	{
		sumMat();
		if(s>smax) smax=s;
	}
	else
	{
		aux[k]=1;
		back(k+1);
        if(count+1>n/2)
            return;
        else
        {
            aux[k]=-1;
            count++;
            flag=1;
            back(k+1);
        }
	}
    if(flag)
        count--;
    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;
}