Cod sursa(job #977919)

Utilizator Linux313Acsinte Florin Linux313 Data 27 iulie 2013 00:47:17
Problema Jocul Flip Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<stdio.h>

long tabla [17][17];
int n,m;

void flipLinie (int linie)
{
	int i;
	for(i=0;i<m;i++)
		tabla[linie][i]= 0 - tabla [linie][i];	
}


void flipColoana (int col)
{
	int i;
	for(i=0;i<n;i++)
	    tabla[i][col]= 0 - tabla[i][col];	
}

long long sumaLinie(int linie)
{
	int i;
	long long s=0;
	
	for(i=0;i<m;i++)
		{ 
			
		s+= tabla [linie][i];
	}
	
	return s;
}

long long sumaColoana( int col)
{
	int i;
	long long s=0;
	for(i=0;i<n;i++)
	    s+=tabla[i][col];
	
	return s;
}
	

void afisare()
{
	int i,j;
		for(i=0;i<n;i++)
		{
		for(j=0;j<m;j++)
			printf("%ld ", tabla[i][j]);
		printf("\n");
		}
	
}
void suma()
{
	int i,j;
	long long sum=0;
	FILE *g;
	g=fopen ( "flip.out", "wt");
		for(i=0;i<n;i++)
			for(j=0;j<m;j++)
			    sum+=tabla[i][j];
	fprintf(g,"%lld", sum);
}
		
	

int main(void)
{
	FILE *f;
	int i,j;
	int exit=1;
	f=fopen ( "flip.in", "rt");
	fscanf(f,"%d",&n);
	fscanf(f,"%d",&m);
	
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			fscanf(f,"%ld", &tabla[i][j]);
			/*
	flipLinie(1);
	afisare();
	* /
	*/
	
	do
	{
		exit=0;
		for(i=0;i<n;i++)

			if (sumaLinie(i) < 0 )
			{
				flipLinie(i);
				exit=1;	
			}
				
		for(j=0;j<m;j++)
				
			if(sumaColoana(j) < 0 )
			{	
				flipColoana(j);
				exit=1;
			}
	
				
			
	}while(exit);
	//afisare();
	suma();
	return 0;
}