Cod sursa(job #2579383)

Utilizator Th3R4nd0mEmanuel Strugaru Th3R4nd0m Data 12 martie 2020 13:37:59
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
using namespace std;
int n ,m, table[16][16], maxsum=0;
int flip[16];
void backtr(int k)
{
	if(k==m)
	{
		int i, j;
		int sf=0, s;
		for(i=0;i<n;i++)
		{
			s=0;
			for(j=0;j<m;j++)
			{
				s += table[i][j] * flip[j];
			}
			if(s<0)
			{
				s = -s;
			}
			sf += s;
		}
		maxsum = max(maxsum, sf);
	}
	else
	{
		flip[k] = 1;
		backtr(k+1);
		flip[k] = -1;
		backtr(k+1);
	}
}
int main()
{
	ifstream in("flip.in");
	ofstream out("flip.out");
	in>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			in>>table[i][j];
		}
	}
	backtr(0);
	out<<maxsum;
}

/*#include <iostream>
#include <fstream>
using namespace std;
int main()
{
	ifstream in("flip.in");
	ofstream out("flip.out");
	int n, m;
	in>>n>>m;
	int mat[n][m];
	int sum;
	for(int i=0;i<n;i++)
	{
		sum=0;
		for(int j=0;j<m;j++)
		{
			in>>mat[i][j];
			sum += mat[i][j];
		}
		if(sum<0)
		{
			for(int j=0;j<n;j++)
			{
				mat[i][j] *= -1;
			}
		}
	}
	for(int j=0;j<n;j++)
	{
		sum = 0;
		for(int i=0;i<n;i++)
		{
			sum += mat[i][j];
		}
		if (sum<0)
		{
			for(int i=0;i<n;i++)
			{
				mat[i][j] *=-1;
			}

		}

	}
	sum = 0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			sum+=mat[i][j];
		}
	}
	cout<<sum;
}*/