Pagini recente » Cod sursa (job #484180) | Cod sursa (job #2366257) | Cod sursa (job #2366102) | Cod sursa (job #769100) | Cod sursa (job #1171407)
#include <fstream>
#include<iostream>
using namespace std;
int a[17][17], x[34], n, m, maxim, cmax, suma;
void flip() {
int nr, i, j, b[17][17], s;
cmax = suma;
for ( i = 1; i <= n; i++ )
for( j = 1; j <= m; j++ )
b[i][j] = a[i][j];
for ( i = 1; i <= n; i++ ) {
if ( x[i] == 1 ) {
for ( j = 1; j <= m; j++ ) {
cmax = cmax - 2*b[i][j];
b[i][j] = -b[i][j];
}
}
}
for ( j = 1; j <= m; j++ ) {
s = 0;
for ( i = 1; i <= n; i++ )
s = s + b[i][j];
if ( s < 0 )
for ( i = 1; i <= n; i++ ) {
cmax = cmax - 2*b[i][j];
b[i][j] = -b[i][j];
}
}
}
void back(int k) {
for ( int i = 0; i <= 1; i++ )
if ( k == n ) {
x[k] = i;
flip();
if ( cmax > maxim )
maxim = cmax;
}
else {
x[k] = i;
back(k+1);
}
}
int main()
{
ifstream f("flip.in");
f >> n >> m;
int i, j;
for ( i = 1; i <= n; i++ )
for( j = 1; j <= m; j++ )
{
f >> a[i][j];
}
for ( i = 1; i <= n; i++ )
for( j = 1; j <= m; j++ )
{
maxim = maxim + a[i][j];
}
f.close();
cmax = maxim;
suma = cmax;
back(1);
ofstream g("flip.out");
g<<maxim;
g.close();
return 0;
}