Pagini recente » Cod sursa (job #697806) | Cod sursa (job #830001) | Cod sursa (job #752626) | Cod sursa (job #2668439) | Cod sursa (job #1438330)
#include <fstream>
using namespace std;
FILE *f=fopen("flip.in","r");
FILE *g=fopen("flip.out","w");
int v[420]={0},x[420]={0},s[420]={0};
int cont(int k)
{
return 1;
}
int solutie(int k,int o)
{
if(k==o)
return 1;
else
return 0;
}
int tipar(int k,int o,int maxim)
{
int p,suma=0;
for(p=1;p<=o;p++)
{
if(x[p]==0)
suma=suma+s[p];
else
suma=suma-s[p];
}
if(suma>maxim)
{
maxim=suma;
for(p=1;p<=o;p++)
v[p]=x[p];
}
return maxim;
}
void bkt(int o,int maxim)
{
int k;
k=1;
x[k]=-1;
while(k>0)
{
if(x[k]<1)
{
x[k]++;
if(cont(k))
if(solutie(k,o))
maxim=tipar(k,o,maxim);
else
{
k++;
x[k]=-1;
}
}
else
{
k--;
}
}
}
int main()
{
int n=0,m=0,a[50][50]={0},suma=0,i=0,j=0;
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fscanf(f,"%d",&a[i][j]);
s[i]=s[i]+a[i][j];
}
}
bkt(n,0);
for(i=1;i<=n;i++)
{
if(v[i]==1)
for(j=1;j<=m;j++)
a[i][j]=0-a[i][j];
}
for(i=1;i<=m;i++)
{
s[i]=0;
for(j=1;j<=n;j++)
{
s[i]=s[i]+a[j][i];
}
}
bkt(m,0);
for(i=1;i<=m;i++)
{
if(v[i]==1)
for(j=1;j<=n;j++){
a[j][i]=0-a[j][i];
suma=suma+a[j][i];
}
else
for(j=1;j<=n;j++){
suma=suma+a[j][i];
}
}
fprintf(g,"%d",suma);
return 0;
}