Pagini recente » Cod sursa (job #737908) | Cod sursa (job #2973243) | Cod sursa (job #1358425) | Cod sursa (job #380398) | Cod sursa (job #770020)
Cod sursa(job #770020)
#include<fstream>
using namespace std;
int n,m, a[20], b[20], v[20],w[20];
long mat[20][20];
long long maxim,sum;
ifstream f("flip.in");
ofstream g("flip.out");
void transforma()
{ sum=0;
for(int j=1; j<=n; j++)
for(int s=1; s<=m; s++)
if(v[j]*w[s]==0 && (v[j]!=0 || w[s]!=0))
sum+=mat[j][s]*(-1);
else
sum+=mat[j][s];
if(maxim<sum)
maxim=sum;
}
void bkty(int y)
{for(int k=b[y-1]+1; k<=m; k++)
if(!w[k])
{b[y]=k;
w[k]=1;
bkty(y+1);
w[k]=0;
b[y]=0;
}
transforma();
}
void bktx (int x)
{
for(int i=a[x-1]+1; i<=n; i++)
if(!v[i])
{a[x]=i;
v[i]=1;
bktx(x+1);
v[i]=0;
a[x]=0;
}
bkty(1);
}
int main()
{
f>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
f>>mat[i][j];
bktx(1);
g<<maxim;
return 0;}