Cod sursa(job #160289)

Utilizator sraduvictorSarmasag Radu Victor sraduvictor Data 14 martie 2008 23:33:09
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <cstdlib>

int main( int argc, char *argv[] )
{
	int mat[16][16];
	FILE *fin = fopen( "flip.in", "r" );
	int n, m;
	fscanf( fin, "%d %d", &n, &m );
	
	for ( int i = 0; i < n; i++ )
	for ( int j = 0; j < m; j++ )
		if ( n < m )
			fscanf( fin, "%d", &mat[i][j] );
		else
			fscanf( fin, "%d", &mat[j][i] );
	fclose( fin );
	
	if ( n > m )
	{
		int t = n;
		n = m;
		m = t;
	}
	
	int nr = 1 << n;
	int max = -1000;
	for ( int i = 0; i < nr; i++ )
	{
		int semn[16];
		int ii = i;
		for ( int j = 0; j < n; j++ )
		{
			semn[j] = 1 - (( ii & 1 ) << 1);
			ii >>= 1;
		}
		int val = 0;
		for ( int j = 0; j < m; j++ )
		{
			int inter = 0;
			for ( int k = 0; k < n; k++ )
				inter += mat[k][j] * semn[k];
			if ( inter < 0 )
				val -= inter;
			else
				val += inter;
		}
		if ( max < val )
			max = val;
	}
	
	FILE *fout = fopen( "flip.out", "w" );
	fprintf( fout, "%d\n", max );
	fclose( fout );
	
	return 0;
}