Cod sursa(job #1014339)

Utilizator Mihai96Saru Mihai Mihai96 Data 22 octombrie 2013 15:58:42
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>

using namespace std;

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

int linie[16];
int 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){
	int suma = 0;
	int 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 backLinie(int k, int &n, Tabla &tabla){
	if(k == n){
		prelSol(tabla);
		return;
	}
	for(int i = -1;i <= 1;i+=2){
		linie[k] = i;
		backLinie(k+1, n, tabla);
	}
}

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