Pagini recente » Cod sursa (job #694837) | Cod sursa (job #200289) | Cod sursa (job #1648766) | Cod sursa (job #1520497) | Cod sursa (job #2709841)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
long n,nr_sol = 1;
short m;
long v[101][101];
int sol[202];
void bkt_linii(int x)
{
long v1[101][101];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
v1[i][j] = v[i][j];
for(int i=x; i<=m; i++)
{
sol[nr_sol] = 0;
//comut actuala linie
for(int k=1; k<=n; k++)
v1[k][i]*=-1;
// comut umratoarea linie
if(i==x)
bkt_linii(x+1);
// fac solutia
for(int d=1;d<=n;d++)
for(int k=1;k<=m;k++)
sol[nr_sol]+= v1[d][k];
nr_sol++;
}
}
void bkt_rand(int x)
{
long v1[101][101];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
v1[i][j] = v[i][j];
for(int i=x; i<=n; i++)
{
sol[nr_sol] = 0;
//comut actualul rand
for(int k=1; k<=m; k++)
v1[i][k]*=-1;
// comut umratorul rand
if(i==x)
bkt_rand(x+1);
// fac solutia
for(int d=1;d<=n;d++)
for(int k=1;k<=m;k++)
sol[nr_sol]+= v1[d][k];
nr_sol++;
for(int a=1;a<=m;a++){
for(int h=1;h<=m;h++)
for(int t=1;t<=n;t++)
if(h==a)
sol[nr_sol]+= v1[t][h]*-1;
else
sol[nr_sol]+= v1[t][h];
nr_sol++;
}
for(int h=1;h<=m;h++)
for(int t=1;t<=n;t++)
sol[nr_sol]+= v[t][h]*-1;
nr_sol++;
}
}
int main()
{
ifstream in("flip.in");
ofstream out("flip.out");
in >> n >> m;
for(long i=1; i<=n; i++)
for(short j=1; j<=m; j++)
in >> v[i][j];
bkt_rand(1);
bkt_linii(1);
sort(sol,sol+nr_sol);
out << sol[nr_sol-1];
return 0;
}