Pagini recente » Cod sursa (job #2303471) | Cod sursa (job #1968065) | Cod sursa (job #2341238) | Cod sursa (job #2534559) | Cod sursa (job #362962)
Cod sursa(job #362962)
#include<fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n,m,a[20][20],slin[20],scol[20],min_l=1,min_l2,min_c=1,min_c2;
int s_l (int n) { //n = nr linie //suma_linie
int s=0;
for (int i=0;i<m;i++) s+=a[n][i];
return s;}
int s_c (int m) { //m = nr coloana //suma_coloana
int s=0;
for (int i=0;i<n;i++) s+=a[i][m];
return s;}
void l_inv (int n) {for (int j=0;j<m;j++) a[n][j]*=-1;}
void c_inv (int m) {for (int i=0;i<n;i++) a[i][m]*=-1;}
int main () {
int i,j,s=0;
fin>>n>>m;
for (i=0;i<n;i++) for (j=0;j<m;j++) fin>>a[i][j]; //citesc matricea
do
{
for (i=0;i<n;i++) slin[i]=s_l(i); //slin = suma liniei i
for (j=0;j<m;j++) scol[j]=s_c(j);
for (i=0;i<n;i++) if (slin[i]<min_l) {min_l=slin[i]; min_l2=i;}
for (j=0;j<m;j++) if (scol[j]<min_c) {min_c=scol[j]; min_c2=j;}
//daca min = 0 (to think)
if (min_l<min_c) l_inv(min_l2);
else if (min_c<min_l) c_inv(min_c2);
else /* if (min_c==min_l) */ l_inv(min_l2);
} while (min_l>=0 && min_c>=0);
for (i=0;i<n;i++) for (j=0;j<m;j++) s+=a[i][j]; //suma matricei finale;
fout<<s;
fin.close(); fout.close();
return 0;
}