Pagini recente » Cod sursa (job #1108857) | Cod sursa (job #1405094) | Cod sursa (job #848703) | Cod sursa (job #161247) | Cod sursa (job #1886671)
#include <bits/stdc++.h>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int a[17][17];
short n,m,dx[17],dy[17];
long long smin;
void citire()
{
f>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
f>>a[i][j];
smin=0;
}
void verificare()
{
long long s=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
s+=(a[i][j]*dx[i]*dy[j]);
if(s>smin)
smin=s;
}
void BKTR(int k,int k1)
{
if(k==n+1 && k1==m+1)
verificare();
else
{
if(k<=n && k1<=m)
{
dx[k]=-1;
dy[k1]=-1;
BKTR(k+1,k1+1);
dx[k]=-1;
dy[k1]=1;
BKTR(k+1,k1+1);
dx[k]=1;
dy[k1]=-1;
BKTR(k+1,k1+1);
dx[k]=1;
dy[k1]=1;
BKTR(k+1,k1+1);
}
else if(k1<=m && k==n+1)
{
dy[k1]=-1;
BKTR(k,k1+1);
dy[k1]=1;
BKTR(k,k1+1);
}
else if(k1==m+1 && k<=n)
{
dx[k]=-1;
BKTR(k+1,k1);
dx[k]=1;
BKTR(k+1,k1);
}
}
}
int main()
{
citire();
BKTR(1,1);
g<<smin;
}