Cod sursa(job #496725)

Utilizator milijrCristian Militaru milijr Data 30 octombrie 2010 13:33:04
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
using namespace std;
int smax=0;
int inversl(int l ,int a[][20], int m)
{
	for(int i=1;i<=m;i++)
		a[i][l]=-a[i][l];
	return 0;
}
int inversc(int c, int a[][20], int n)
{
	for(int i=1;i<=n;i++)
		a[c][i]=-a[c][i];
	return 0;
}
int sum(int m, int n, int a[][20])
{
	int i,j,s=0;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			s+=a[i][j];
	return s;
}
int urm(int l,int c, int a[][20], int n, int m)
{
	if(c>m || l>n)
		return 0;
	int s,i,j;
	for(i=c;i<=m;i++)
	{
		inversc(i,a,n);
		urm(l,i+1,a,n,m);
		s=sum(m,n,a);
		inversc(i,a,n);
		if(s>smax)
			smax=s;
	}
	for(i=l;i<=n;i++)
	{
		inversl(i,a,m);
		urm(l+1,i+1,a,n,m);
		s=sum(m,n,a);
		inversl(i,a,n);
		if(s>smax)
			smax=s;
	}
	return 0;
}
int main()
{
	ifstream fin("flip.in");
	ofstream fout("flip.out");
	int i,a[20][20],n,m,j;
	fin>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			fin>>a[i][j];
	urm(1,1,a,n,m);
	fout<<smax;
}