Pagini recente » Cod sursa (job #144852) | Cod sursa (job #1480646) | Cod sursa (job #1966028) | Cod sursa (job #124852) | Cod sursa (job #798788)
Cod sursa(job #798788)
#include <iostream>
#include <fstream>
using namespace std;
int tabla[16][16];
bool checkSums(int line, int column, int lineSize, int columnSize, bool checkColumn) // Verifica daca suma numerelor negative de pe o linie sau coloana este mai mare ca suma celor pozitive
{
int i, sumPositive = 0, sumNegative = 0;
if (!checkColumn)
{
int temp[lineSize];
for (i = 0; i < lineSize; i++)
temp[i] = tabla[line][i];
for (i = 0; i < lineSize; i++)
{
if (temp[i] > 0)
{
sumPositive += temp[i];
}
else
{
temp[i] *= -1;
sumNegative += temp[i];
}
}
}
else
{
int temp[columnSize];
for (i = 0; i < columnSize; i++)
temp[i] = tabla[i][column];
for (i = 0; i < columnSize; i++)
{
if (temp[i] > 0)
{
sumPositive += temp[i];
}
else
{
temp[i] *= -1;
sumNegative += temp[i];
}
}
}
if (sumPositive > sumNegative)
return false;
else
return true;
}
void flip(int line, int column, int lineSize, int columnSize, bool isColumn) // Inmulteste o coloana sau linie cu -1
{
int i;
if (isColumn)
{
for (i = 0; i < columnSize; i++)
{
tabla[i][column] *= -1;
}
}
else
{
for (i = 0; i < columnSize; i++)
{
tabla[line][i] *= -1;
}
}
}
int main()
{
int i, y, N, M, sum = 0;
ifstream f("flip.in");
ofstream g("flip.out");
f>>N>>M;
for (i = 0; i < N; i++)
{
for (y = 0; y < M; y++)
{
f>>tabla[i][y];
}
}
f.close();
for (i = 0; i < N; i++)
if (checkSums(i, 0, M, N, false))
flip(i, 0, M, N, false);
for (i = 0; i < M; i++)
{
if (checkSums(0, i, M, N, true))
flip(0, i, M, N, true);
}
for (i = 0; i < N; i++)
{
for (y = 0; y < M; y++)
{
sum += tabla[i][y];
}
}
g<<sum;
g.close();
}