Pagini recente » Cod sursa (job #2142950) | Cod sursa (job #40006) | Cod sursa (job #39724) | Cod sursa (job #3130944) | Cod sursa (job #362944)
Cod sursa(job #362944)
#include<fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n,m,a[20][20],slin[20],scol[20];
int s_l (int n, int inv) { //n = nr linie //suma_linie
int s=0;
if (inv==1) inv=-1; else inv=1;
for (int i=0;i<m;i++) s+=(a[n][i]*inv);
return s;}
int s_c (int m, int inv) { //m = nr coloana //suma_coloana
int s=0;
if (inv==1) inv =-1; else inv=1;
for (int i=0;i<n;i++) s+=(a[i][m]*inv);
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
for (i=0;i<n;i++) slin[i]=s_l(i,0); //slin = suma liniei i
for (j=0;j<m;j++) scol[j]=s_c(j,0);
for (j=0;j<m;j++) if (s_c(j, 0) < s_c(j, 1)) c_inv(j); // -||- coloanei -||-
for (i=0;i<n;i++) if (s_l(i, 0) < s_l(i, 1)) l_inv(i); //daca suma liniei inversate e mai mare o inversez //x
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;
}