Cod sursa(job #97320)

Utilizator GagosGagos Radu Vasile Gagos Data 6 noiembrie 2007 15:45:36
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream.h>
#define I "flip.in"
#define O "flip.out"
int n,m,maxx,st[100],a[16][16];
void init(int k)
{
	st[k]=-1;
}
int succ(int k)
{
	if(st[k]<st[k-1]+1){
		st[k]=st[k]+1;return 1;
	}
	return 0;
}
int valid(int k)
{
	return 1;
}
int sol(int k)
{
	return k==n;
}
void tipar(){
	int max=0,i,j,s=0;
	for(i=1;i<=n;i++)
		if(st[i]==0)
			for(j=1;j<=m;j++)
				a[i][j]*=-1;
	for(i=1;i<=n;++i){
		for(j=1;j<=m;++j)
			s=s+a[j][i];
		if(s<0)
			for(j=1;j<=m;++j){
				a[j][i]*=-1;max+=a[j][i];
			}
		else
			max+=s;
		s=0;
	}
	if(max>maxx)
		maxx=max;
}
void bkt(int k){
	init(k);
	while(succ(k))
		if(valid(k))
			if(sol(k))
				tipar();
			else
				bkt(k+1);
}
int main()
{
	ifstream f(I);
	ofstream g(O);
	f>>n>>m;
	for(int i=1;i<=n;++i)
		for(int j=1;j<=m;++j)
			f>>a[i][j];
	bkt(1);
	g<<maxx;
	f.close();
	g.close();
	return 0;
}