Pagini recente » Cod sursa (job #2087478) | Cod sursa (job #2359588) | Cod sursa (job #2116818) | Cod sursa (job #1929200) | Cod sursa (job #696247)
Cod sursa(job #696247)
#include <cstdio>
int comb[1000000];
int a[100][100],mat[100][100];
bool ex(int n,int i){
if( (1<<i) & n ) return 1;
return 0;
}
int main(){
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
int n,i,j,dim=1,m,cont=0,max=-11111111,ver=0,in,su=0,supart=0;
scanf("%d %d",&m, &n);
for(i=1;i<=m;++i)
for(j=1;j<=n;++j)
scanf("%d", &a[i][j]);
for( i=1 ; i<(1<<n) ; i++ ){
for( j=0 ; (1<<j)<=i ; j++ )
if( ex(i,j) )
comb[dim]=(comb[dim]+(j+1))*10;
comb[dim]/=10;
++dim;
cont++;
}
dim=1;
while(cont){
su=0;
ver=0;
for(i=1;i<=m;++i)
for(j=1;j<=n;++j)
mat[i][j]=a[i][j];
while(comb[dim]!=0){
in=comb[dim]%10;
comb[dim]/=10;
//printf("%d", in);
for(i=1;i<=m;++i){
mat[i][in]=(a[i][in])*(-1);
}
}
for(i=1;i<=m;++i){
supart=0;
for(j=1;j<=n;++j)
supart+=mat[i][j];
if(supart<0) supart=supart*-1;
su=su+supart;
}
if(su>=max) max=su;
++dim;
--cont;
}
printf("%d", max);
return 0;
}