Pagini recente » Cod sursa (job #2479986) | Cod sursa (job #3319901) | Borderou de evaluare (job #2261770) | Monitorul de evaluare | Cod sursa (job #413639)
Cod sursa(job #413639)
#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;}