Pagini recente » Cod sursa (job #1992331) | Cod sursa (job #2294543) | Cod sursa (job #1058495) | Cod sursa (job #3002783) | Cod sursa (job #363080)
Cod sursa(job #363080)
#include<iostream>
#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=0, min_c=-1, min_c2=0;
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;}
//void afisare () {for (int i=0;i<n;i++) {for (int j=0;j<m;j++) cout<<a[i][j]<<' '; cout<<'\n';} cout<<endl;} //afisare
int negativ () {for (int i=0;i<n;i++) for (int j=0;j<n;j++) if (a[i][j]<0) return 1; return 0;}
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
//afisare();
int r=0;
while (r<=256 && (min_l<=0 || min_c<=0) /*&& min_l==0?negativ():1*/) {
min_l=0; min_c=0;
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); //cout<<"\n min_c2= "<<min_c2<<endl<<endl; //
else if (min_c==min_l) l_inv(min_l2);
//c_inv(min_c2);
//l_inv(min_l2);
//afisare();
r++;
}
for (i=0;i<n;i++) for (j=0;j<m;j++) s+=a[i][j]; //suma matricei finale;
cout<<s;
fout<<s;
//afisare();
fin.close(); fout.close();
return 0;
}