Pagini recente » Cod sursa (job #1914861) | Cod sursa (job #2892738) | Cod sursa (job #2421530) | Cod sursa (job #28868) | Cod sursa (job #2809330)
#include <iostream>
#include<fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int N,M,m[20][20],minim;
void modifica()
{
minim = 0;
// Scoatem primul minim
for(int i=0; i<N; i++)
minim += m[i][0];
// Aflam celelalte sume
int poz = 0;
// verifica randuri
for(int i=0; i<N; i++){
int suma = 0;
for(int j=0; j<M; j++)
suma += m[i][j];
if(suma < minim){
poz = i;
minim = suma;
}
}
// verifica coloane
for(int i=0; i<M; i++){
int suma = 0;
for(int j=0; j<N; j++)
suma += m[j][i];
if(suma < minim){
poz = N+i;
minim = suma;
}
}
// Comutam matricea
if(minim < 0){
if(poz < N)
for(int i=0;i<M;i++)
m[poz][i] *= -1;
else
for(int i=0;i<N;i++)
m[i][poz-N] *= -1;
modifica();
}
}
int main()
{
fin >> N >> M;
for(int i=0; i<N; i++)
for(int j=0; j<M; j++)
fin >> m[i][j];
modifica();
minim = 0;
for(int i=0; i<N; i++)
for(int j=0; j<M; j++)
minim += m[i][j];
fout << minim;
return 0;
}