Cod sursa(job #1986596)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 28 mai 2017 18:38:44
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <vector>
#include <queue>
#include <unordered_map>
#include <map>
#include <string>
#include <iomanip>
#include <cmath>
#include <cstring>
#include <algorithm> 
#include <ctime>

#define MaxN 25
#define INF 2140000000

using namespace std;

FILE *IN,*OUT;

int N,M,Mat[MaxN][MaxN],S[MaxN],Max=-INF;
void Reverse(int x)
{
	for(int i=1;i<=N;i++)
		Mat[i][x]*=-1,S[i]+=2*Mat[i][x];
}
int main()
{
	IN=fopen("flip.in","r");
	OUT=fopen("flip.out","w");

	fscanf(IN,"%d%d",&N,&M);
	for(int i=1;i<=N;i++)
		for(int j=1;j<=M;j++)
			fscanf(IN,"%d",&Mat[i][j]),S[i]+=Mat[i][j];
	for(int i=0;i<1<<M;i++)
	{
		int Sum=0;
		for(int j=1;j<=M;j++)
			if((1<<(j-1))&i)
				Reverse(j);
		for(int j=1;j<=N;j++)
			Sum+=abs(S[j]);
		for(int j=1;j<=M;j++)
			if((1<<(j-1))&i)
				Reverse(j);
		Max=max(Max,Sum);
	}
	fprintf(OUT,"%d",Max);
	return 0;
}