Pagini recente » Cod sursa (job #2397388) | Cod sursa (job #2772733) | Cod sursa (job #1003819) | Cod sursa (job #2375506) | Cod sursa (job #2710451)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
long n,nr_sol = 1;
short m;
long v[101][101];
int sol[202]= {0};
void bkt_rand(int x,int j)
{
sol[nr_sol] = 0;
long v1[101][101];
for(int i=1; i<=n; i++)
for(int a=1; a<=m; a++)
v1[i][a] = v[i][a];
for(int i=1; i<=m; i++)
{
v1[x][i]*=-1;
sol[nr_sol]+=v1[x][i];
}
for(int i=1; i<=n; i++)
{
int suma=0;
if(i!=x)
for(int h=1; h<=m; h++)
suma+= v[i][h];
if(suma<0)
for(int h=1; h<=m; h++)
{
v1[i][h]*=-1;
sol[nr_sol]+= v1[i][h];
}
else
for(int h=1; h<=m; h++)
sol[nr_sol]+= v1[i][h];
if(i==n)
{
nr_sol++;
sol[nr_sol] = 0;
for(int k=1; k<=m; k++)
for(int s=1; s<=n; s++)
if(k==j)
sol[nr_sol]+= v1[s][k]*-1;
else
sol[nr_sol]+=v1[s][k];
}
}
if(j==m)
{
nr_sol++;
sol[nr_sol]=0;
for(int k=1; k<=m; k++)
for(int z=1; z<=n; z++)
sol[nr_sol] += v1[z][k]*-1;
}
nr_sol++;
}
void bkt_linii(int x,int j)
{
sol[nr_sol] = 0;
long v1[101][101];
for(int i=1; i<=n; i++)
for(int a=1; a<=m; a++)
v1[i][a] = v[i][a];
for(int i=1; i<=n; i++)
{
v1[x][i]*=-1;
sol[nr_sol]+=v1[x][i];
}
for(int i=1; i<=m; i++)
{
int suma=0;
if(i!=x)
for(int h=1; h<=n; h++)
suma+= v[i][h];
if(suma<0)
for(int h=1; h<=n; h++)
{
v[i][h]*=-1;
sol[nr_sol]+= v1[i][h];
}
else
for(int h=1; h<=n; h++)
sol[nr_sol]+= v1[i][h];
if(i==m)
{
nr_sol++;
sol[nr_sol] = 0;
for(int k=1; k<=n; k++)
for(int s=1; s<=m; s++)
if(k==j)
sol[nr_sol]+= v1[s][k]*-1;
else
sol[nr_sol]+=v1[s][k];
}
}
if(j==m)
{
nr_sol++;
sol[nr_sol]=0;
for(int k=1; k<=n; k++)
for(int z=1; z<=m; z++)
sol[nr_sol] += v1[k][z]*-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];
for(int i =1; i<=n; i++)
for(int j =1; j<=m; j++)
bkt_rand(i,j);
for(int i=1; i<=m; i++)
for(int l=1; l<=n; l++)
bkt_linii(i,l);
sort(sol,sol+nr_sol);
out << sol[nr_sol-1];
return 0;
}