Pagini recente » Cod sursa (job #1999030) | Rating Rafael (xpilov) | Cod sursa (job #1897075) | Cod sursa (job #1274054) | Cod sursa (job #1150466)
#include <stdio.h>
#include <stdlib.h>
int M[16][16], aux;
int n, m, s, smax, count;
void citesteMat(FILE *f)
{
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
{
fscanf(f, "%d", &M[i][j]);
s+=M[i][j];
}
return;
}
void comuta(int id)
{
int sum=0;
if(id<n)
for(int i=0; i<m; i++)
{
sum+=M[id][i];
M[id][i]*=-1;
}
else
for(int i=0; i<n; i++)
{
sum+=M[i][id-n];
M[i][id-n]*=-1;
}
s-=2*sum;
return;
}
void back(int k)
{
int flag=0;
if(k==n+m)
{
if(abs(s)>smax) smax=abs(s);
}
else
{
back(k+1);
if(count+1>n+m/2)
return;
else
{
comuta(k);
count++;
flag=1;
}
back(k+1);
}
if(flag)
count--;
return;
}
int main()
{
FILE *fi, *fo;
fi=fopen("flip.in", "r");
fo=fopen("flip.out", "w");
fscanf(fi, "%d %d", &n, &m);
citesteMat(fi);
back(0);
fprintf(fo, "%d", smax);
fclose(fi);
fclose(fo);
return 0;
}