Pagini recente » Cod sursa (job #310004) | Cod sursa (job #2231192) | Cod sursa (job #397279) | Cod sursa (job #1535617) | Cod sursa (job #12759)
Cod sursa(job #12759)
#include <stdio.h>
FILE *in = fopen("flip.in", "r"), *out = fopen("flip.out", "w");
int a[17][17];
int N, M;
int S = 0;
void read()
{
fscanf(in, "%d %d", &N, &M);
for ( int i = 1; i <= N; ++i )
for ( int j = 1; j <= M; ++j )
fscanf(in, "%d", &a[i][j]);
}
void print()
{
for ( int i = 1; i <= N; ++i )
{
for ( int j = 1; j <= M; ++j )
printf("%d ", a[i][j]);
printf("\n");
}
}
void flip_l(int linie)
{
for ( int i = 1; i <= M; ++i )
a[linie][i] *= -1;
}
void flip_c(int coloana)
{
for ( int i = 1; i <= N; ++i )
a[i][coloana] *= -1;
}
int suma(int coloana)
{
int s = 0;
for ( int i = 1; i <= N; ++i )
s += a[i][coloana];
return s;
}
void verif_col()
{
for ( int i = 1; i <= M; ++i )
if ( suma(i) < 0 )
flip_c(i);
}
void sumfin()
{
int t = 0;
for ( int i = 1; i <= N; ++i )
for ( int j = 1; j <= M; ++j )
t += a[i][j];
if ( t > S )
S = t;
}
void back(int linie)
{
for ( int i = 0; i <= 1; ++i )
{
if ( i == 0 )
{
verif_col();
sumfin();
if ( linie != N )
back(linie+1);
}
else
{
flip_l(linie);
verif_col();
sumfin();
if ( linie != N )
back(linie+1);
}
}
}
int main()
{
read();
back(1);
fprintf(out, "%d\n", S);
return 0;
}