Pagini recente » Cod sursa (job #2891790) | Cod sursa (job #692512) | Cod sursa (job #2041283) | Cod sursa (job #1514986) | Cod sursa (job #2041053)
#include <iostream>
#include <bitset>
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
long long st[20],n,rez,rezf,a[20][20],a2[20][20],kl,m,sum[20];
bitset <20> verif;
void afis(int x)
{
for(int i=1; i<=x; i++)
{
cout<<st[i]<<" ";
}
}
void combinari(int x,int k)
{
if(x==k+1)
{
afis(k),cout<<"\n";
kl=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i==st[kl])
a2[i][j]=-1*a[i][j];
else
a2[i][j]=a[i][j];
}
if(i==st[kl])
kl++;
}
for(int i=0;i<=20;i++)
sum[i]=0;
for(int j=1;j<=m;j++)
for(int i=1;i<=n;i++)
{
sum[j]+=a2[i][j];
}
rez=0;
for(int j=1;j<=m;j++)
{
if(sum[j]>=0)
rez+=sum[j];
else
rez+=-1*sum[j];
}
if(rezf<rez)
rezf=rez;
}
else
{
for( int i=x; i<=n; i++)
{
if(!verif[i])
{
verif[i]=1;
st[x]=i;
if(st[x]>st[x-1])
combinari(x + 1,k);
verif[i] = 0;
}
}
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
fin>>a[i][j];
for(int i=1; i<=n; i++)
{
combinari(1,i);
}
fout<<rezf;
return 0;
}