Cod sursa(job #130970)

Utilizator RockManIzsak Istvan RockMan Data 2 februarie 2008 18:42:27
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
long t[1<<4][1<<4];
int n,m;
long double max;
void beolvas()
{
	int i,j;
	FILE *f=fopen("flip.in","r");
	fscanf(f,"%d%d",&n,&m);
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			fscanf(f,"%ld",&t[i][j]);
	fclose(f);

}
int optimizal()
{
	int tal=1,i,j,h=0;
	long double s1,s2;
	while(tal)
	{
		tal=0;
		for(i=0;i<n;i++)
		{
			s1=s2=0;
			for(j=0;j<m;j++)
			{
				s1+=t[i][j];
				s2+=(-t[i][j]);
			}
			if(s2>s1)
				for(j=0,tal=1,h++;j<m;t[i][j++]*=(-1));
		}
	}
	tal=1;
	while(tal)
	{
		tal=0;
		for(i=0;i<m;i++)
		{
			s1=s2=0;
			for(j=0;j<n;j++)
			{
				s1+=t[j][i];
				s2+=(-t[j][i]);
			}
			if(s2>s1)
				for(j=0,tal=1,h++;j<n;t[j][i]*=(-1),j++);
		}
	}
	return h;
}
void megold()
{
	while(optimizal());
	int i,j;
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			max+=t[i][j];
}
void kiir()
{
	FILE *f=fopen("flip.out","w");
	fprintf(f,"%.0Lf",max);
	fclose(f);
}
int main()
{
	beolvas();
	megold();
	kiir();
	return 0;
}