Pagini recente » Cod sursa (job #1021091) | Cod sursa (job #1544804) | Profil Pop_Rares123 | Cod sursa (job #1291780) | Cod sursa (job #1731566)
#include<stdlib.h>
#include<stdio.h>
long matrix[20][20],max=-1000000,workMatrix[20][20];
int n,m;
int main(){
int i,j;
FILE *fin=fopen("flip.in","r");
FILE *fout=fopen("flip.out","w");
fscanf(fin,"%d %d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fscanf(fin,"%ld",&matrix[i][j]);
if(m > n) {
int aux;
for(i = 0; i < m; i++)
for (j = i + 1; j < m ; j++){
aux = matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i] = aux;
}
aux = n;
n = m;
m = aux;
}
int flag = (1 << m) -1;
int graterSum = 0;
int max = 0;
while (flag >= 0) {
for ( i = 0; i< m; i++){
int toMultiply = (flag & (1<<(m-i-1))) > 0 ? -1 : 1;
for ( j = 0 ; j < n; j++ ){
workMatrix[j][i] = matrix[j][i] * toMultiply;
}
}
graterSum = 0;
for (i = 0; i < n; i++) {
int sum = 0;
for (j = 0; j < m; j++){
//System.out.print(workMatrix[i][j] + " ");
sum += workMatrix[i][j];
}
graterSum += (sum > 0 ? sum : -sum);
//System.out.println(graterSum + "\n");
}
//System.out.println();
flag -- ;
if (graterSum > max)
max = graterSum;
}
fprintf(fout,"%ld",max);
fclose(fin);
fclose(fout);
return 0;
}