Cod sursa(job #1013906)

Utilizator Mihai96Saru Mihai Mihai96 Data 21 octombrie 2013 21:36:14
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>

using namespace std;

struct Tabla{
	int n;
	int m;
	int a[16][16];
};

int linie[16];
long long sumaMaxima;

inline int max(int a, int b){
	if(a > b){
		return a;
	}
	return b;
}

void citireDate(Tabla &tabla){
	ifstream fin("flip.in");
	fin>>tabla.n>>tabla.m;
	for(int i = 0; i < tabla.n;i++){
		for(int j = 0;j < tabla.m;j++){
			fin>>tabla.a[i][j];
		}
	}
	fin.close();
}

void scriereDate(){
	ofstream fout("flip.out");
	fout<<sumaMaxima<<"\n";
	fout.close();
}

void prelSol(Tabla &tabla){
	long long suma = 0;
	long long sumaLinie;
	for(int i = 0;i < tabla.n;i++){
		sumaLinie = 0;
		for(int j = 0;j < tabla.m;j++){
			sumaLinie += linie[j] * tabla.a[i][j];
		}
		suma += max(sumaLinie, -1*sumaLinie);
	}
	
	sumaMaxima = max(suma, sumaMaxima);
}

void backLinii(int k, int &n, Tabla &tabla){
	if(k == n){
		prelSol(tabla);
		return;
	}
	for(int i = -1;i <= 1;i+=2){
		linie[k] = i;
		backLinii(k+1, n, tabla);
	}
}

int main(int argc, char *argv[]){
	Tabla tabla;
	citireDate(tabla);
	backLinii(0, tabla.n, tabla);
	scriereDate();
	return 0;
}