Cod sursa(job #971012)

Utilizator SandmanVlad I Sandman Data 8 iulie 2013 11:34:08
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
using namespace std;

int n,m, st[20][20], st2[20][20], maxs = 0;
long int a[20][20];

void verif(int nr) {
	if (nr > maxs) maxs = nr;
}

int suma() {
	int i, j, s=0;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++) {
			if (st2[i][1]==1) a[i][j]= a[i][j]*(-1);
			if (st[1][j]==1) a[i][j]= a[i][j]*(-1);
			s = s + a[i][j];
		}
     return s;
}

void back2(int t) {
	st2[t][1]=-1;
	while (t>0) {
		if (st2[t][1]<1) {
			st2[t][1]++;
				if (t == n) {
					verif(suma());
				}
				else { 
					t++;
					st2[t][1]=-1;
				}
		}
		else t--;
	}
}

void back(int k) {
	st[1][k]=-1;
	while (k>0) {
		if (st[1][k]<1) {
			st[1][k]++;
				if (k == m) back2(1);
				else { 
					k++;
					st[1][k]=-1;
				}
		}
		else k--;
	}
}


void main () {
	ifstream f("flip.in");
	ofstream g("flip.out");
	int i,j;
	f>>n;
	f>>m;
	for (i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			f>>a[i][j];
	back(1);
	g<<maxs;
	f.close();
	g.close();
}