Cod sursa(job #1335972)

Utilizator alinciocoveanuCiocoveanu Alin alinciocoveanu Data 6 februarie 2015 10:43:56
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>

using namespace std;

int a[22], n, m, b[22][22], c[22][22];
int main()
{
  int i, k,j, suma, s, smax;

// citire
ifstream fin ("flip.in");
fin>>n>>m;
for (i=1;i<=n;i++)
	for (j=1;j<=m;j++)
		fin>>b[i][j];
fin.close();
smax = -1000000000;
while (a[0] == 0)
{
	// parcurg a si daca a[i]=1, atunci schimb semnul la coloana i
	for (i = 1; i <= m; i++)
	  if (a[i] == 0)
		// iau coloana i din b si o copii in c
		for (k=1; k<= n; k++)
			c[k][i] = b[k][i];
	   else // a[i] = 1, deci schimb semnul coloanei i
		for (k=1;k<=n;k++)
			c[k][i] = -b[k][i];

// parcurg liniile matricei c si calculez suma in modul pe fiecare linie
	suma = 0;
	for (i=1;i<=n;i++)
	{
		s = 0; // suma de pe linia i
		for (k=1;k<=m;k++)
			s=s+c[i][k];
if (s < 0) s = -s;
suma += s;
}
// actualizez daca e cazul suma maxima
if (suma > smax) smax = suma;

	// urmatorul sir de biti
	i=m;
	while (a[i] == 1)
	{
		a[i] = 0;
		i--;
}
a[i]=1;
}
ofstream fout ("flip.out");
fout<<smax;
fout.close();
return 0;
}