Pagini recente » Cod sursa (job #1870508) | Cod sursa (job #1108131) | Cod sursa (job #2216338) | Cod sursa (job #2063725) | Cod sursa (job #1986596)
#include <iostream>
#include <vector>
#include <queue>
#include <unordered_map>
#include <map>
#include <string>
#include <iomanip>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <ctime>
#define MaxN 25
#define INF 2140000000
using namespace std;
FILE *IN,*OUT;
int N,M,Mat[MaxN][MaxN],S[MaxN],Max=-INF;
void Reverse(int x)
{
for(int i=1;i<=N;i++)
Mat[i][x]*=-1,S[i]+=2*Mat[i][x];
}
int main()
{
IN=fopen("flip.in","r");
OUT=fopen("flip.out","w");
fscanf(IN,"%d%d",&N,&M);
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
fscanf(IN,"%d",&Mat[i][j]),S[i]+=Mat[i][j];
for(int i=0;i<1<<M;i++)
{
int Sum=0;
for(int j=1;j<=M;j++)
if((1<<(j-1))&i)
Reverse(j);
for(int j=1;j<=N;j++)
Sum+=abs(S[j]);
for(int j=1;j<=M;j++)
if((1<<(j-1))&i)
Reverse(j);
Max=max(Max,Sum);
}
fprintf(OUT,"%d",Max);
return 0;
}