Cod sursa(job #871866)

Utilizator Claudiu95Vartolomei Alexandru Claudiu Claudiu95 Data 5 februarie 2013 14:04:19
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<iostream>
#include<fstream>
using namespace std;
int maxi=0,a[33][33],x[33],n,m;
ifstream f("flip.in");
ofstream g("flip.out");
void citire(){
	f>>n>>m;
	int i,j;
	for(i=1;i<=n;++i)
		for(j=1;j<=m;++j){
			f>>a[i][j];
			maxi+=a[i][j];
		}
}
int sol(int k){
	return k==n+m;
}
void modificarel(int linie){
	for(int i=1;i<=m;++i)
		a[linie][i]*=-1;
}
void modificarec(int coloana){
	for (int i=1;i<=n;++i)
		a[i][coloana]*=-1;
}
int suma(){
	int x=0;
	for(int i=1;i<=n;++i)
		for(int j=1;j<=m;++j)
			x+=a[i][j];
	return x;
}
void bkt(int k){
	int i;
	x[k]=-1;
	while(x[k]<1){
		++x[k];
		if(sol(k)){
			for(i=1;i<=n+m;++i)
				if(x[i])
					if(i<=n)
						modificarel(i);
					else
						modificarec(i-n);
			int xx=suma();
			if(xx>maxi)
				maxi=xx;
				for(i=1;i<=n+m;++i)
				if(x[i])
					if(i<=n)
						modificarel(i);
					else
						modificarec(i-n);
		}
		else
			bkt(k+1);
	}
}
int main(){
	citire();
	bkt(1);
	g<<maxi;
	return 0;
}