Cod sursa(job #578268)

Utilizator PatrikStepan Patrik Patrik Data 11 aprilie 2011 10:19:48
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
	#include<stdio.h>
	FILE *f , *g ;
	int n , m ;
	long a[17][17]  , s  , st[34];
	
	void citire();
	void flip(int k);
	void suma();
	void tipar();
	
	int main()
	{
		citire();
		flip(1);
		tipar();
		return 0;
	}
	
	void citire()
	{
		f=fopen("flip.in" ,"r" );
		fscanf(f ,"%d%d",  &n, &m );
		for ( int i = 1 ; i<= n ; ++i )
			for ( int j = 1 ; j<= m ; ++j )
				fscanf(f, "%ld" , &a[i][j]);
			fclose(f);
	}
	
	void flip(int k)
	{
		for ( int i = 0 ; i<= 1 ; ++i )
		{
			st[k] = i;
			if(k == m+n)
				suma();
			else
				if(k < m+n )
					flip(k+1);
		}
	}
	
	void suma()
	{
		long t , si = 0 ;
		for ( int i = 1 ; i<= n ; ++i )
		{
			for(int j = 1 ; j<= m ; ++j )
			{
				t = a[i][j] ;
				if(st[i])
					t = -t ;
				if(st[n+j])
					t = -t ;
				si+=t;
			}
		}
		if(si > s)
			s = si ;
	}
	
	void tipar()
	{
		g=fopen("flip.out" , "w" );
		fprintf(g, "%ld " , s );
		fclose(g);
	}