Cod sursa(job #883790)

Utilizator drobertDumitru Robert drobert Data 20 februarie 2013 13:13:20
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <limits>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");

int n,m,mato[18][18],st[18];
int smax=numeric_limits<int>::min();

void fsum() {
	int i,j,stemp,s=0,matf[18][18];
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			matf[i][j]=mato[i][j];
	for (i=1;i<=n;i++)
		if (st[i]==2)
			for (j=1;j<=m;j++)
				matf[i][j]*=-1;
	for (j=1;j<=m;j++) {
		stemp=0;
		for (i=1;i<=n;i++)
			stemp+=matf[i][j];
		stemp*=(stemp<0?-1:1);
		s+=stemp;
	}
	if (s>smax)
		smax=s;
	for (i=1;i<=n;i++)
		g<<st[i]<<" ";
	g<<endl;
}
	
void back(int k) {
	int t;
	if (k==n+1)
		fsum();
	else if (k<=n) {
		for (t=1;t<=2;t++) {
			st[k]=t;
			back(k+1);
		}
	}
}

int main ()
{
	int i,j;
	f>>n>>m;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			f>>mato[i][j];
	back(1);
	g<<smax;
}