Cod sursa(job #734665)

Utilizator avram_florinavram florin constantin avram_florin Data 14 aprilie 2012 17:57:37
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
#include<cstdio>

using namespace std;

const int MaxN = 20;

const char InFile[] = "flip.in";
const char OutFile[] = "flip.out";

int N,M,F[MaxN][MaxN],Smax;

int main()
{
	ifstream fin( InFile );
	ofstream fout( OutFile );
	fin >> N >> M;
	int i,j,l,s,t;
	for( i = 0 ; i < N ; ++i )
		for( j = 0 ; j < M ; ++j )
			fin >> F[i][j];
	/*
		folosim mastile pe biti pentru a genera toate submultimile de M elemente
		mai precis generam toate numerele de la 0 la 2^M - 1
	*/
	for( i = 0 ; i < (1 << M) ; ++i )
		{
			s = 0;
			for( l = 0 ; l < N ; ++l )
				{
					t = 0;
					for( j = 0 ; j < M ; ++j )
						if( i & (1<<j) )
							t = t - F[l][j]; // daca bitul j este 1 atunci linia j o inmultim cu -1
							else
							t = t + F[l][j]; // daca bitul j este 0 atunci linia j o lasam neschimbata
					if( t > 0 )
						s = s + t;
						else
						s = s - t;
						
				}
			if( s > Smax )
				Smax = s;
		}
	fout << Smax << '\n';
	fin.close();
	fout.close();
	return 0;
}