Pagini recente » Borderou de evaluare (job #1013639) | Borderou de evaluare (job #1864652) | Cod sursa (job #1253981) | Borderou de evaluare (job #476403) | Cod sursa (job #2809349)
#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 = N;
// 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){
//cout << minim;
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;
}