Cod sursa(job #10560)

Utilizator OXyeBadragan Silviu OXye Data 28 ianuarie 2007 17:53:57
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
int main()
{
	unsigned i,j,n,m,x,ok=0;
	int a[16][16],neg1,poz1,poz2,neg2,s=0;
	FILE *f;
	f=fopen("flip.in","r");
	fscanf(f,"%d%d",&n,&m);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
			fscanf(f,"%d",&a[i][j]);
	}
	while(!ok)
	{
		ok=1;
		for(i=1;i<=n;i++)
		{
			for(j=1;j<=m;j++)
				if(a[i][j]<0)
				{
					poz1=0;neg1=0;poz2=0;neg2=0;
					for(x=1;x<=n;x++)
					{
						if(a[x][j]<0)
							neg1+=a[x][j];
						else
							poz1+=a[x][j];
					}
					for(x=1;x<=m;x++)
					{
						if(a[i][x]<0)
							neg2+=a[i][x];
						else
							poz2+=a[i][x];
					}
					if(-neg1-poz1>-neg2-poz2)
					{
						if(-neg1-poz1>neg1+poz1) {for(x=1;x<=n;x++) a[x][j]=-a[x][j]; ok=0;}
					}
					else
					{
						if(-neg2-poz2>neg2+poz2) {for(x=1;x<=m;x++) a[i][x]=-a[i][x]; ok=0;}
					}
				}
		}
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			printf("%d ",a[i][j]);
			s+=a[i][j];
		}
		printf("\n");
	}
	fclose(f);
	f= fopen("flip.out","w");
	fprintf(f,"%d\n",s);
	fclose(f);
	return 0;
}