Pagini recente » Cod sursa (job #1688610) | Cod sursa (job #2037903) | Cod sursa (job #1084307) | Cod sursa (job #31955) | Cod sursa (job #3234252)
#include <fstream>
using namespace std;
ifstream cin("flip.in");
ofstream cout("flip.out");
int a[30][30];
int main()
{
///Citim datele.
int n , m;
cin>>n>>m;
for(int i = 1;i<=n;i++)
for(int j = 1;j<=m;j++)
cin>>a[i][j];
int p = (1<<m); // 2^m;
long long sol = 0,sum = 0;
/// in a[i][0] vom retine suma liniei i
for(int comb = 1;comb < p; comb++)
{
///Resetam sumele.
for(int i = 1;i<=n;i++)
a[i][0] = 0;
sum = 0;
///Salvam combinatia pentru a o putea prelucra.
int nr = comb;
///Parcurgem matricea *pe coloane* si inversam elementul daca e cazul.
for(int j = 1;j <= m; j++, nr/=2)
for(int i = 1;i<=n;i++)
{
if(nr%2==1) ///toata coloana va fi inversata.
a[i][0]-=a[i][j];
else a[i][0]+=a[i][j]; ///Toata coloana nu-i inversata.
}
for(int i = 1;i<=n;i++)
sum+=abs(a[i][0]); /// adunam valoarea absoluta.
sol = max(sol,sum);
}
cout<<sol;
return 0;
}