Pagini recente » Cod sursa (job #582552) | Monitorul de evaluare | Cod sursa (job #1635183) | Cod sursa (job #3346265) | Cod sursa (job #1934831)
#include <iostream>
#include <fstream>
using namespace std;
int n,m,a[17][17],b[17][17],vc[17],vl[17],ma,s=0;
void suma(int k1,int k2)
{
int i,j,s=0;;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
b[i][j]=a[i][j];
for(j=1;j<=k1;j++)
for(i=1;i<=n;i++)
b[i][vc[j]]*=(-1);
for(i=1;i<=k2;i++)
for(j=1;j<=m;j++)
b[vl[i]][j]*=(-1);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s+=b[i][j];
if(s>ma)
ma=s;
}
void bkt_linii(int k1,int k2,int p)
{
int i,q;
for(i=vl[k2-1]+1;i<=n;i++)
{
vl[k2]=i;
if(k2==p)
suma(k1,k2);
else
bkt_linii(k1,k2+1,p);
}
}
void bkt_coloane(int k1,int p)
{
int i,j,q;
for(i=vc[k1-1]+1;i<=m;i++)
{
vc[k1]=i;
if(k1==p)
{
suma(k1,0);
for(j=1;j<=n;j++)
bkt_linii(k1,1,j);
}
else
bkt_coloane(k1+1,p);
}
}
int main()
{
int i,j;
ifstream f("flip.in");
ofstream g("flip.out");
f>>n;
f>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
f>>a[i][j];
s+=a[i][j];
}
ma=s;
for(i=1;i<=m;i++)
bkt_coloane(1,i);
g<<ma;
return 0;
}