Pagini recente » Cod sursa (job #953997) | Cod sursa (job #536302) | Cod sursa (job #1065798) | Istoria paginii runda/simulare_oni_2021_12/clasament | Cod sursa (job #1356980)
#include <iostream>
#include <fstream>
using namespace std;
int a[17][17];
bool p1[17],p2[17];
int n,m,maxim=-999999;
void eval()
{
int i,j,curent=0;
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
if (p1[i]^p2[j])
{
curent-=a[i][j];
}
else
{
curent+=a[i][j];
}
}
}
if (curent>maxim)
{
maxim=curent;
}
}
void rez2(int k)
{
int i,negativ=0,pozitiv=0;
if (k>m)
{
eval();
}
else
{
for (i=1;i<=n;i++)
{
if (p1[i]==0)
{
if (a[i][k]<0)
{
negativ++;
}
else
{
pozitiv++;
}
}
else
{
if (a[i][k]<0)
{
pozitiv++;
}
else
{
negativ++;
}
}
}
if (pozitiv>negativ)
{
rez2(k+1);
}
else
{
p2[k]=1;
rez2(k+1);
}
}
}
void rez1(int k)
{
if (k>n)
{
rez2(1);
}
else
{
p1[k]=0;
rez1(k+1);
p1[k]=1;
rez1(k+1);
}
}
int main()
{
ifstream in("flip.in");
ofstream out("flip.out");
int i,j;
in>>n;
in>>m;
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
in>>a[i][j];
}
}
rez1(1);
out<<maxim;
}