Cod sursa(job #1130965)

Utilizator MariusMocanuMocanu Marius-Alexandru @ASECIB MariusMocanu Data 28 februarie 2014 16:50:32
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>

using namespace std;
int m, n,suma=0;

void startback(int**,int*,int);
void back(int **a, int *p, int nivel)
{
	if (nivel == m-1 )
	{
		int sumalinie=0;
		int sumatotala = 0;
		for (int i = 0; i < n; i++)
		{
			sumalinie = 0;
			for (int j = 0; j < m; j++)
			{
				sumalinie += a[i][j]*p[j];
			}
			sumalinie > sumalinie*(-1) ? sumatotala += sumalinie : sumatotala += sumalinie*(-1);
		}
		if (sumatotala > suma) suma = sumatotala;
	}
	else
		startback(a, p,nivel+1);
}
void startback(int **a, int *p, int nivel)
{

	for (int i = -1; i<=1; i += 2)
	{
		p[nivel] = i;
		back(a, p, nivel );
		
	}
}


int main()
{
	ifstream in("flip.in");
	ofstream out("flip.out");
	int i, j;
	in >> n; in >> m;
	int **a;
	int *p;
	a = new int*[n];
	for (i = 0; i<n; i++)
		a[i] = new int[m];
	for (i = 0; i<n; i++)
	for (j = 0; j<m; j++)
		in >> a[i][j];
	p = new int[m];
	startback(a, p, 0);
	out << suma;
	delete[] p;
	for (i = 0; i < m; i++)
		delete[] a[i];
	in.close();
	out.close();
}