Pagini recente » Cod sursa (job #2770786) | Cod sursa (job #2614627) | Cod sursa (job #1563632) | Cod sursa (job #2911393) | Cod sursa (job #3042311)
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n, m, v[21][21];
vector<int> lin_flip;
long long a = 0;
void flip(int k)
{int i;
for(i = 1; i<=m; i++)
{
v[k][i] = v[k][i] * (-1);
}
}
void backtracking(int k)
{int i, j;
long long sumcol,total;
if(k == n)
{
for( i = 0; i<lin_flip.size(); i++)
{
flip(lin_flip[i]);
}
sumcol = 0;
total = 0;
for( j = 1; j<=m; j++)
{
sumcol = 0;
for( i = 1; i<=n; i++)
{
sumcol =sumcol+ v[i][j];
}
total=total+ abs(sumcol);
}
a = max(a, total);
for( i = 0; i<lin_flip.size(); i++)
{
flip(lin_flip[i]);
}
return;
}
lin_flip.push_back(k);
backtracking(k+1);
lin_flip.pop_back();
backtracking(k+1);
}
int main()
{int i,j;
f>>n>>m;
for( i = 1; i<=n; i++)
{
for( j = 1; j<=m; j++)
{
f>>v[i][j];
}
}
backtracking(1);
g<<a;
return 0;
}