Pagini recente » Cod sursa (job #2213215) | Cod sursa (job #755513) | Cod sursa (job #1901529) | Cod sursa (job #1188468) | Cod sursa (job #2222061)
#include <iostream>
#include <stdio.h>
using namespace std;
int M,N,A[18][18],smax=0;
int suma ()
{ int i,j;
int s=0;
for (i=1;i<=N;i++)
for (j=1;j<=M;j++)s+=A[i][j];
return s;
}
void flip_lin (int i)
{ int j; for (j=1;j<=M;j++) A[i][j]*=(-1);
}
void flip_col (int j)
{ int i; for (i=1;i<=N;i++) A[i][j]*=(-1);
}
void backt(int k)
{ int i;
for (i=0;i<=1;i++)
{
if(k<=M){flip_col(k); int s=suma();if(s>smax)smax=s;
backt(k+1);}
else if(k<=M+N){ flip_lin(k-M);int s=suma(); if(s>smax)smax=s;
backt(k+1);
}
}
}
int main()
{ FILE *f=fopen("flip.in","rt");
FILE *g=fopen("flip.out","wt");
int j;
int i;
fscanf(f,"%d %d",&N,&M);
for (i=1;i<=N;i++)
for (j=1;j<=M;j++)
{fscanf(f,"%d",&A[i][j]); smax+=A[i][j];}
backt(1);
fprintf(g,"%d\n",smax);
fclose(f);
fclose(g);
return 0;
}