Pagini recente » Cod sursa (job #740944) | Cod sursa (job #651448) | Cod sursa (job #1365568) | Cod sursa (job #1185147) | Cod sursa (job #899066)
Cod sursa(job #899066)
#include <fstream>
#include <vector>
using namespace std;
long int Maxim = -1.e20;
vector <long int> Matrice[17], VectComb ; int N, M;
ifstream fin("flip.in");
ofstream fout("flip.out");
void Citire()
{
int x;
fin >> N >> M;
for(int i = 0; i < N; i++)
for(int j = 0; j < M; j++)
{fin >> x; Matrice[i].push_back(x);}
}
long int Back(long int Contor)
{
long int Suma, aux=0;
if (Contor==N)
{
Suma=0;
/* Mergem pe coloana */
for (int i = 0; i < M; i++)
{
aux = 0;
for (int j = 0; j < N; j++)
aux += (Matrice[j][i]*VectComb[j]);
/* Punem suma in modul pt a nu mai fi nevoiti sa inmultim si liniile cu -1 */
if (aux < 0) Suma = Suma-aux;
else Suma = Suma + aux;
}
if(Maxim < Suma) Maxim = Suma;
return 0;
}
/* Luam toate variantele (inmultit cu 1/-1) pentru coloane */
VectComb.push_back(1);
Back(Contor+1);
VectComb.pop_back();
VectComb.push_back(-1);
Back(Contor+1);
VectComb.pop_back();
}
int main()
{
Citire();
Back(0);
fout<<Maxim;
}