Pagini recente » Cod sursa (job #2903527) | Cod sursa (job #1044813) | Cod sursa (job #3323382) | Cod sursa (job #2232141) | Cod sursa (job #1456762)
#include <fstream>
int main()
{
std::ifstream in("flip.in");
std::ofstream out("flip.out");
int n;
int m;
in>>n>>m;
int a[n][m];
int sum_pozitives;
int sum_negatives;
int sum = 0;
for(int ln=0;ln<n;++ln)
/// Citim tabloul bidimensional din fisier si determinam liniile asupra carora
/// se poate aplica metoda 'flip'.
{
sum_pozitives = sum_negatives = 0;
for(int col=0;col<m;++col)
/// Pe masura ce se citesc elementele liniei curente, insumam
/// numerele negative si numerele pozitive.
{
in>>a[ln][col];
if(a[ln][col] < 0) sum_negatives += a[ln][col];
else sum_pozitives += a[ln][col];
}
/// Dupa citirea liniei, determinam daca este avantajos sa operam 'flip'
/// asupra liniei curente (i.e.: daca modulul sumei numerelor negative este
/// mai mare decat suma numerelor pozitive).
if(sum_pozitives < (-1 * sum_negatives))
{
for(int col=0;col<m;++col)
{
a[ln][col] *= -1;
}
}
}
for(int col=0;col<m;++col)
/// Determinam coloanele asupra carora se poate aplica metoda ;flip; si
/// calculam suma elementelor.
{
sum_pozitives = sum_negatives = 0;
for(int ln=0;ln<n;++ln)
/// Pe masura ce se parcurg elementele coloanei curente, insumam
/// numerele negative si numerele pozitive.
{
if(a[ln][col] < 0) sum_negatives += a[ln][col];
else sum_pozitives += a[ln][col];
}
if(sum_pozitives < (-1 * sum_negatives))
/// Dupa parcurgerea coloanei determinam daca este avantajos sa operam 'flip'
/// asupra ei curente (i.e.: daca modulul sumei numerelor negative este
/// mai mare decat suma numerelor pozitive).
{
for(int ln=0;ln<n;++ln)
{
a[ln][col] *= -1;
}
}
for(int ln=0;ln<n;++ln)
/// Calculam suma elementelor
{
sum += a[ln][col];
}
}
out<<sum;
in.close();
out.close();
return 0;
}