Pagini recente » Cod sursa (job #2873225) | Cod sursa (job #723070) | Cod sursa (job #1968521) | Cod sursa (job #3145255) | Cod sursa (job #102626)
Cod sursa(job #102626)
#include <stdio.h>
int st[20], k, n, m;
int flip[20][20];
int curent[20][20];
int max, maxc;
void clean()
{
int i, j;
for(i=0; i<n; i++)
for(j=0; j<m; j++)
curent[i][j] = flip[i][j];
}
int main()
{
int i, fi, f=0, sum;
freopen("flip.in", "r", stdin);
freopen("flip.out", "w", stdout);
scanf("%d %d", &n, &m);
for(i=0; i<n; i++)
for(fi=0; fi<m; fi++)
scanf("%d", &flip[i][fi]);
st[k] = 0;
clean();
while(k>=0)
{
f = 1;
if(st[k] == 0)
st[k] = -1;
else if(st[k] == -1)
st[k] = 1;
else
{
f=0;
k--;
}
if(st[k] < 2 && k == m-1)
{
// for(i=0; i<n; i++)
// printf("%d ", st[i]);
// printf("\n");
for(i=0; i<m; i++)
for(fi=0; fi<n; fi++)
curent[fi][i] = flip[fi][i]*st[i];
maxc = 0;
for(i=0; i<n; i++)
{
sum = 0;
for(fi=0; fi<m; fi++)
sum += curent[i][fi];
if(sum < 0)
{
sum = 0;
for(fi=0; fi<m; fi++)
{
curent[i][fi] *= -1;
sum += curent[i][fi];
}
}
maxc += sum;
}
if(maxc > max)
max = maxc;
clean();
}
else
{
if(f)
{
k++;
st[k] = 0;
}
}
}
printf("%d\n", max);
return 0;
}