Pagini recente » Cod sursa (job #2191353) | Istoria paginii utilizator/anamaria_brezoiu | Monitorul de evaluare | Cod sursa (job #1896876) | Cod sursa (job #2706048)
#include <iostream>
#include <fstream>
using namespace std;
void read(int a[][20], int& n, int& m);
void afisare(int a[][20], int n, int m);
void flip(int a[][20], int n, int m);
int sum_max(int a[][20], int n, int m);
int main()
{
int a[20][20], n, m;
read(a, n, m);
flip(a, n, m);
//afisare(a, n, m);
//cout << "\n";
fstream g("flip.out", ios::out);
g << sum_max(a, n, m);
return 0;
}
void flip(int a[][20], int n, int m)
{
int sum = 0, sumpoz = 0, sumneg = 0, maxneg = 0, maxpoz=0;
int ind_col, ind_lin;
for (int j = 0; j < m; j++)
{
sumpoz = 0, sumneg = 0;
for (int i = 0; i < n; i++)
{
if (a[i][j] > 0)
sumpoz = sumpoz + a[i][j];
else
sumneg = sumneg + a[i][j];
}
if (abs(sumneg) > sumpoz)
if (abs(sumneg) > maxneg)
ind_col = j;
else
if(abs(sumneg)==maxneg)
if(sumpoz > maxpoz)
ind_col = j, maxpoz=sumpoz;
}
for (int i = 0; i < n; i++)
{
sumpoz = 0, sumneg = 0;
for (int j = 0; j < m; j++)
{
if (a[i][j] > 0)
sumpoz = sumpoz + a[i][j];
else
sumneg = sumneg + a[i][j];
}
if (abs(sumneg) > sumpoz)
if (abs(sumneg) > maxneg)
ind_lin = i;
else
if (abs(sumneg) == maxneg)
if (sumpoz > maxpoz)
ind_col = i, maxpoz = sumpoz;
}
for (int i = 0; i < n; i++)
a[i][ind_col] *= -1;
for (int j = 0; j < m; j++)
a[ind_lin][j] *= -1;
}
int sum_max(int a[][20], int n, int m)
{
int sum = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
sum += a[i][j];
return sum;
}
void afisare(int a[][20], int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cout << a[i][j] << " ";
cout << endl;
}
}
void read(int a[][20], int& n, int& m)
{
fstream f("flip.in", ios::in);
f >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
f >> a[i][j];
}