Cod sursa(job #937090)

Utilizator AquilaregAdrian Petrisor Aquilareg Data 9 aprilie 2013 17:05:03
Problema Jocul Flip Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<stdio.h>
#include<math.h>

void main()
{
		
	FILE*f=fopen("flip.in","r"),*g=fopen("flip.out","w");
	int M,N,ok,i,j;

///introducere nr linii,coloane
	fscanf(f,"%d",&M);
	fscanf(f,"%d",&N);
	if(N<1||N>16||M<1||M>16)
		{
				printf("\nErorare introducere!\nReintroduceti! ");
				return;
		}

	long int mat[15][15];

	//citesc matricea
	for(i=0;i<M;i++)
		for(j=0;j<N;j++)
		{
			fscanf(f,"%d",&mat[i][j]);
			if(mat[i][j]<-1000000||mat[i][j]>1000000)
			{
				printf("Eoare introducere!\nReintroduceti!\n");
				return;
			}
		}

	//aflu config optima
	int poz,neg;

	do
	{
	ok=1;

	//pe linii
	for(i=0;i<M;i++)
	{
		poz=0;
		neg=0;
		for(j=0;j<N;j++)
		{
			if(mat[i][j]>=0) poz+=mat[i][j];
			else
				neg+=abs(mat[i][j]);
		}
		if(poz<neg)
		{
			ok=0;
			for(j=0;j<N;j++)
				mat[i][j]*=(-1);
		}
	}

	//coloane
	for(j=0;j<N;j++)
	{
		poz=0;
		neg=0;
		for(i=0;i<M;i++)
		{
			if(mat[i][j]>=0) poz+=mat[i][j];
			else
				neg+=abs(mat[i][j]);
		}
		if(poz<neg)
		{
			ok=0;
			for(i=0;i<M;i++)
				mat[i][j]*=(-1);
		}
	}
	}while(ok==0);

	//aflu suma max
	int suma=0;
	for(i=0;i<M;i++)
		for(j=0;j<N;j++)
			suma+=mat[i][j];

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

}