Cod sursa(job #1717306)

Utilizator TrifuTrifu Marius Trifu Data 14 iunie 2016 17:59:43
Problema Jocul Flip Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<stdio.h>
int main ()
{
	FILE *f;
	int n,m,i,j,ok=1;
	long A[16][16],suma1,suma2,sum1,sum2,sum,B[16][16],C[16][16];
	f=fopen("flip.in","r");
	fscanf(f,"%d",&n);
	fscanf(f,"%d",&m);
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			fscanf(f,"%ld",&A[i][j]);
	fclose(f);
	while(ok!=0)
	{
		ok=0;
		sum1=0;
		for(i=0;i<n;i++)
		{
			suma1=0;
			suma2=0;
			for(j=0;j<m;j++)
			{
				suma1+=A[i][j];
				suma2-=A[i][j];
			}
			if(suma2>suma1)
			{
				for(j=0;j<m;j++)
					B[i][j]=-A[i][j];
				sum1+=suma2;
				ok=1;
			}
			else
			{
				for(j=0;j<m;j++)
					B[i][j]=A[i][j];
				sum1+=suma1;
			}
		}
		sum2=0;
		for(i=0;i<m;i++)
		{
			suma1=0;
			suma2=0;
			for(j=0;j<n;j++)
			{
				suma1+=A[j][i];
				suma2-=A[j][i];
			}
			if(suma2>suma1)
			{
				for(j=0;j<n;j++)
					C[j][i]=-A[j][i];
				sum2+=suma2;
				ok=1;
			}
			else
			{
				for(j=0;j<n;j++)
					C[j][i]=A[j][i];
				sum2+=suma1;
			}
		}
		if(sum1>sum2)
			for(i=0;i<n;i++)
				for(j=0;j<m;j++)
					A[i][j]=B[i][j];
		else
			for(i=0;i<n;i++)
				for(j=0;j<m;j++)
					A[i][j]=C[i][j];
	}
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			sum+=A[i][j];
	f=fopen("flip.out","w");
	fprintf(f,"%ld",sum);
	fclose(f);
	return 0;
}