Pagini recente » Cod sursa (job #2663688) | Cod sursa (job #2151494) | Cei mai harnici utilizatori infoarena | Cod sursa (job #3165782) | Cod sursa (job #546023)
Cod sursa(job #546023)
#include<fstream>
using namespace std;
fstream f("flip.in", ios::in),
g("flip.out", ios::out);
int smax, i, j, sl[17], x[17], n, m, a[18][18];
void init(int k)
{
x[k]=-1;
}
int succ(int k)
{
if(k<=m && x[k]<1)
{
x[k]++;
return 1;
}
return 0;
}
int valid(int k)
{
return 1;
}
int solutie(int k)
{
if(k==m)
return 1;
return 0;
}
void tipar(int k)
{
int i, s, c;
s=0;
for(i=1; i<=n; ++i)
{
c=sl[i];
for(j=1; j<=m; ++j)
if(x[j]==1)
c=c+2*(-a[i][j]);
if(c<-c)
s=s+(-c);
else
s+=c;
}
if(s>smax)
smax=s;
}
void back()
{
int i, k;
k=1;
init(k);
while(k>0)
{
i=0;
while(i==0 && succ(k))
if(valid(k))
i=1;
if(i==1)
{
if(solutie(k))
tipar(k);
else
{
k++;
init(k);
}
}
else
k--;
}
}
int main()
{
f>>n>>m;
for(i=1; i<=n; ++i)
{
for(j=1; j<=m; ++j)
{
f>>a[i][j];
sl[i]+=a[i][j];
}
}
back();
g<<smax;
}