Cod sursa(job #413639)

Utilizator KosmynC64Munteanu Cosmin KosmynC64 Data 8 martie 2010 21:05:44
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<iostream.h>
#include<fstream.h>
#include<limits.h>
#define IN ifstream f("flip.in");
#define OUT ofstream g("flip.out");
#define INC f.close();
#define OUTC g.close();
int xx,yy,map[16][16],mapp[16][16];
int max;
bool flip[32];
int suma(){
	for(int i=0;i<xx;i++)
	for(int y=0;y<yy;y++)
		if(flip[i]==1)mapp[i][y]=-map[i][y];
		else mapp[i][y]=map[i][y];
	for(int i=0;i<yy;i++)
	for(int x=0;x<xx;x++)
		if(flip[i+xx-1]==1)mapp[x][i]=-mapp[x][i];
		else mapp[x][i]=mapp[x][i];
	int sum=0;
	for(int y=0;y<yy;y++)
	for(int x=0;x<xx;x++)
		sum+=mapp[x][y];
return sum;}
void rezolva(int i){
	int sum;
	if(i==xx*yy-1){
		sum=suma();
		if(max<sum)max=sum;}
	else{
		flip[i]=1;
		rezolva(i+1);
		flip[i]=0;
		rezolva(i+1);
}}
void citeste(){
	IN f>>yy>>xx;
	for(int y=0;y<yy;y++)
	for(int x=0;x<xx;x++)
	f>>map[x][y];INC}
int main(){
	citeste();
	rezolva(0);
	OUT g<<max;OUTC
return 0;}