Pagini recente » Cod sursa (job #453690) | Cod sursa (job #249729) | Cod sursa (job #1275558) | Cod sursa (job #1298157) | Cod sursa (job #683071)
Cod sursa(job #683071)
#include<iostream>
#include<fstream>
#include<sstream>
#include<cstdlib>
#include<cstdio>
#include<math.h>
using namespace std;
int n,m,flip[20][20],S=-int(2e9),a[20][20];
int v[20];// v ajuta la comutarea liniilor (1 daca se inmulteste cu -1, 0 in caz contrar)
void copiere(int a[20][20], int b[20][20])
{
int i,j;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
a[i][j]=b[i][j];
}
void suma()
{
int i,j,sum=0;
for (j=1;j<=m;j++)
{
int sumcol=0;
for (i=1;i<=n;i++)
sumcol+=a[i][j];
sum+=abs(sumcol);
}
if (sum>S)
S=sum;
}
void scanare()
{
int i,j;
copiere(flip,a);
for (i=1;i<=n;i++)
if (v[i]==1)
for (j=1;j<=m;j++)
flip[i][j]=-1*flip[i][j];
suma();
}
void sub(int k)
{
if (k==n)
{
scanare();
return ;
}
v[k]=0;
sub(k+1);
v[k]=1;
sub(k+1);
}
int main(void)
{
int i,j;
fstream f,g;
f.open("flip.in",ios::in);
g.open("flip.out",ios::out);
f>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
f>>a[i][j];
sub(1);
g<<S;
}