Cod sursa(job #547907)

Utilizator CelMaiProstCel Mai Prost CelMaiProst Data 6 martie 2011 20:05:10
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include<fstream.h>
#include<iostream.h>
ifstream f("flip.in");
ofstream g("flip.out");
long long v[17][17],t[17][17],n,m,i,j,s,max;
int suma()
{
for(i=1,s=0;i<=n;i++)
	for(j=1;j<=m;s+=v[i][j],j++);
return s;
}
void afisare()
{
cout<<"\n";
for(i=1;i<=n;cout<<"\n",i++)
	for(j=1;j<=m;cout<<v[i][j]<<" ",j++);
}
void schimba_linia(int i)
{
int q;
for(q=1;q<=m;q++)
	{v[i][q]*=-1;}
}
void schimba_coloana( int j)
{
int q;
for(q=1;q<=n;q++)
	{v[q][j]*=-1;}
}

void MatriceaOriginala()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
	{
	v[i][j]=t[i][j];
	}
}
}
void Level_1()
{
int q;
for(q=1;q<=n;q++)
	{
	schimba_linia(q);
	s=suma();
	MatriceaOriginala();
	if(s>max)max=s;
	}
}
void Level_2()
{
int q;
for(q=1;q<=m;q++)
	{
	schimba_coloana(q);
	s=suma();
	MatriceaOriginala();
	if(s>max)max=s;
	}
}
void Level_3()
{
int q,w;
for(q=1;q<=n;q++)
	{
	schimba_linia(q);
	for(w=1;w<=m;w++)
		{
		schimba_coloana(w);
		s=suma();
		if(s>max)max=s;
		schimba_coloana(w);
		}
	MatriceaOriginala();
	}
}
void Level_4()
{
int q,w;
for(w=1;w<=m;w++)
	{
	schimba_coloana(w);
	for(q=1;q<=n;q++)
		{
		schimba_linia(q);
		s=suma();
		if(s>max)max=s;
		schimba_linia(q);
		}
	MatriceaOriginala();
	}
}
int main ()
{
	int level=0;
f>>n>>m;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
	{f>>v[i][j];
	t[i][j]=v[i][j];
	}
}
max=-9999999;
//Schimbatoriu
while(level!=9)
{
if(level==1)Level_1();
if(level==2)Level_2();
if(level==3)Level_3();
if(level==4)Level_4();
level++;
}
g<<max<<"\n";
}