Pagini recente » Cod sursa (job #307336) | Cod sursa (job #1111490) | Monitorul de evaluare | Cod sursa (job #857572) | Cod sursa (job #413659)
Cod sursa(job #413659)
#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];
int max;
bool flip[32];
int mmin(int a,int b){
if(a<=b)return a;
if(b<a)return b;}
int mmax(int a,int b){
if(a>=b)return a;
if(b>a)return b;}
int suma(){
int sum=0;
for(int y=0;y<yy;y++)
for(int x=0;x<xx;x++)
sum+=map[x][y]*(flip[x]*-1)*(flip[xx-1+y]*-1);
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;}