Pagini recente » Cod sursa (job #1216647) | Cod sursa (job #2538906) | Cod sursa (job #1868367) | Cod sursa (job #82520) | Cod sursa (job #2727247)
#include <iostream>
#include<fstream>
#include <math.h>
using namespace std;
ifstream f ("flip.in");
ofstream g ("flip.out");
int N,M,i,j,k,xs[16],mat[16][16],sc[16],smax;
void prel_sol()
{
int i,j,s=0;
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
if (xs[j])
s+=mat[i][j]*-1;
else
s+=mat[i][j];
}
if (s>smax)
{
smax=s;
for (i=0; i<M; i++)
sc[i]=xs[i];
}
}
void prel_sol2()
{
int i,j,s=0;
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
if (xs[i])
s+=mat[i][j]*-1;
else
s+=mat[i][j];
}
if (s>smax)
smax=s;
}
void back(int k)
{
if (k==M)
prel_sol();
else
for (int i=0; i<2; i++)
{
xs[k]=i;
back(k+1);
}
}
void back2(int k)
{
if (k==N)
prel_sol2();
else
for (int i=0; i<2; i++)
{
xs[k]=i;
back2(k+1);
}
}
int main()
{
f>>N>>M;
for (i=0; i<N; i++)
for (j=0; j<M; j++)
f>>mat[i][j];
back(0);
for (j=0; j<M; j++)
if (sc[j])
for (i=0; i<N; i++)
mat[i][j]*=-1;
back2(0);
g<<smax;
}