Pagini recente » Cod sursa (job #233025) | Cod sursa (job #1913879) | preONI 2008, Runda Finala | preONI 2008, Runda Finala | Cod sursa (job #2016034)
#include <bits/stdc++.h>
using namespace std;
int st[18],n,m,s,k,a[18][18],b[18][18];
int sum()
{
int i,j,ss=0,c;
for(i=1;i<=k;i++)
{
for(j=1;j<=m;j++)
b[st[i]][j]*=-1;
}
for(j=1;j<=m;j++)
{
c=0;
for(i=1;i<=n;i++)
{c+=b[i][j]; b[i][j]=a[i][j];}
if(c<0) c*=-1;
ss+=c;
}
return ss;
}
void Backt(int top)
{
if(top==k+1)
{
s=max(s,sum());
}
else
{
for(int i=st[top-1]+1;i<=n;i++)
{
st[top]=i;
Backt(top+1);
}
}
}
int main()
{
int i,j;
ifstream fin("flip.in");
fin>>n>>m;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fin>>a[i][j];
b[i][j]=a[i][j];
s+=a[i][j];
}
}
fin.close();
for(k=1;k<=n;k++)
Backt(1);
ofstream fout("flip.out");
fout<<s;
fout.close();
return 0;
}