Cod sursa(job #754429)

Utilizator catalincocisCatalin Cocis catalincocis Data 2 iunie 2012 01:07:07
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>
#include <stdlib.h>

int m,n;

int max(int a,int b, int c)
{
	if ((a>b) && (a>c))
		return a;
	if (b>c)
		return b;
	return c;
}

int back(int a[16][16],int y, int coef)
{
	if (coef = -1)
		for (int i=0;i<m;i++)
			a[i][y] = -a[i][y];

	int sum = 0;
	//schimba liniile negative
	for (int i=0;i<m;i++)
	{
		int sumint = 0;
		for (int j=0;j<n;j++)
			sumint += a[i][j];
		if (sumint < 0)
			sum -= sumint;
		else
			sum += sumint;
	}

	if (y == m-1)
		return sum;
	return max(sum,back(a,y+1,1),back(a,y+1,-1));
}

int main()
{
	FILE *f = fopen("flip.in","r");
	FILE *g = fopen("flip.out","w");
	
	int a[16][16];
	fscanf(f,"%d",&m);
	fscanf(f,"%d",&n);
	
	for (int i=0;i<m;i++)
		for (int j=0;j<n;j++)
			fscanf(f,"%d",&a[i][j]);

	int sum;
	int x,y;
	x = back(a,0,1);
	y = back(a,0,-1);
	if (x>y)
		sum = x;
	else
		sum = y;

	fprintf(g,"%d",sum);

	fclose(f);
	fclose(g);
}