Pagini recente » Cod sursa (job #1343452) | Cod sursa (job #2892688) | Borderou de evaluare (job #1003669) | Cod sursa (job #2532306) | Cod sursa (job #1987186)
#include <fstream>
#include <cmath>
#define MAX 20
using namespace std;
ifstream fi("flip.in");
ofstream fo("flip.out");
int a[MAX][MAX],p[MAX],sl[MAX],sc[MAX],m,n;
int sch[MAX],sl2[MAX],sc2[MAX];
int rez;
///in p avem liniile care sunt schimbate
void bkt(int poz)
{
if (poz>1)
{
int sum=0;
for (int i=1; i<=n; i++)
sl2[i]=sl[i];
for (int j=1; j<=m; j++)
sc2[j]=sc[j];
for (int i=1; i<poz; i++)
for (int j=1; j<=m; j++)
sc2[j]-=2*a[p[i]][j];
for (int j=1; j<=m; j++)
sum+=abs(sc2[j]);
rez=max(rez,sum);
}
for (int i=p[poz-1]+1; i<=n; i++)
{
p[poz]=i;
bkt(poz+1);
}
}
int main()
{
fi>>n>>m;
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
{
fi>>a[i][j];
sl[i]+=a[i][j];
sc[j]+=a[i][j];
}
bkt(1);
fo<<rez;
fi.close();
fo.close();
return 0;
}