Pagini recente » Cod sursa (job #1202609) | Cod sursa (job #2630775) | Cod sursa (job #44991) | Monitorul de evaluare | Cod sursa (job #91788)
Cod sursa(job #91788)
#include<stdio.h>
#include<math.h>
long a[16][16],n,m,max,sir[16][16];
void citire (){
freopen ("flip.in","r",stdin);
scanf ("%ld", &n);
scanf ("%ld", &m);
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
scanf("%ld",&a[i][j]);
fclose(stdin);
}
long sum (int l,int c){
long S=0;
for (int i=0;i<16;i++){
long nou=l|(1<<i);
if (l==nou)
for (int ii=0;ii<m;ii++)
a[i][ii]*=-1;}
for (int j=0;j<16;j++) {
long nou=c|(1<<j);
if (c==nou)
for (int jj=0;jj<n;jj++)
a[jj][j]*=-1;}
for (int o=0;o<n;o++)
for (int p=0;p<m;p++)
S+=a[o][p];
return S;
}
void egalitate(){
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
a[i][j]=sir[i][j];}
void suma (){
long S1=0;
for (int ii=0;ii<n;ii++)
for (int jj=0;jj<m;jj++)
max+=a[ii][jj];
for (int i=0;i<pow(2,n);i++)
for (int j=0;j<pow(2,m);j++){
S1=sum(i,j);
egalitate();
if (S1>max)
max=S1;
}
}
int main(){
freopen("flip.out","w",stdout);
citire();
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
sir[i][j]=a[i][j];
suma();
printf("%ld",max);
printf("\n");
fclose(stdout);
return 0;
}