Pagini recente » Istoria paginii runda/becreative2 | Cod sursa (job #2041262) | Cod sursa (job #778951) | Cod sursa (job #2642818) | Cod sursa (job #2179171)
#include <stdio.h>
using namespace std;
int n, m, a[20][20];
void read()
{
freopen("flip.in", "r", stdin);
scanf("%d %d\n", &n, &m);
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
scanf("%d ", &a[i][j]);
}
void commute(int x, int y)
{
if (x == 1)
for(int j = 0; j < m; j++)
a[y][j] *= -1;
else
for(int i = 0; i < n; i++)
a[i][y] *= -1;
}
int sumCheck(int x, int y)
{
if (a[x][y] == 0)
return -1;
int lineSumP = 0;
int lineSumN = 0;
for (int j = 0; j < m; j++)
{
if (a[x][j] > 0)
lineSumP += a[x][j];
else
lineSumN += a[x][j];
}
lineSumN *= -1;
int lineSum;
bool checkLine;
if (lineSumN > lineSumP)
{
checkLine = 1;
lineSum = lineSumN;
}
else
{
checkLine = 0;
lineSum = lineSumP;
}
int columnSumP = 0;
int columnSumN = 0;
for (int i = 0; i < n; i++)
{
if (a[i][y] > 0)
columnSumP += a[i][y];
else
columnSumN += a[i][y];
}
columnSumN *= -1;
int columnSum;
bool checkColumn;
if (columnSumN > columnSumP)
{
checkColumn = 1;
columnSum = columnSumN;
}
else
{
checkColumn = 0;
columnSum = columnSumP;
}
if (checkLine == 0 && checkColumn == 0)
return -2;
else if (checkLine == 1 && checkColumn == 0)
return x;
else if (checkLine == 0 && checkColumn == 1)
return y;
else if (columnSum > columnSum)
return y;
return x;
}
void sum()
{
int sum = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
sum += a[i][j];
freopen("flip.out", "w", stdout);
printf("%d", sum);
}
int main()
{
read();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
int SumCheck = sumCheck(i ,j);
if (SumCheck == i)
commute(1, i);
if (SumCheck == j)
commute(2, j);
if (SumCheck == -1)
{
commute(1, i);
commute(2, j);
}
}
}
sum();
return 0;
}
//void commute(int x, int y)
//{
// if (x == 1)
// {
// for(int j = 0; j < m; j++)
// a[y][j] *= -1;
// }
// else
// {
// for(int i = 0; i < n; i++)
// a[i][y] *= -1;
// }
//}
//
//void sumCheckColumn()
//{
// int spos = 0;
// int sneg = 0;
// for (int j = 0; j < m; j++)
// {
// sneg = 0;
// spos = 0;
// for (int i = 0; i < m; i++)
// {
// if (a[i][j] < 0)
// sneg += a[i][j];
// else
// spos += a[i][j];
// }
// sneg *= -1;
// if(sneg > spos)
// commute(2, j);
// }
//}
//
//void sumCheckLine()
//{
// int spos = 0;
// int sneg = 0;
// for (int i = 0; i < n; i++)
// {
// sneg = 0;
// spos = 0;
// for (int j = 0; j < m; j++)
// {
// if (a[i][j] < 0)
// sneg += a[i][j];
// else
// spos += a[i][j];
// }
// sneg *= -1;
// if(sneg > spos)
// commute(1, i);
// }
//}
//
//void sum()
//{
// int sum = 0;
// for (int i = 0; i < n; i++)
// for (int j = 0; j < m; j++)
// sum += a[i][j];
// freopen("flip.out", "w", stdout);
// printf("%d", sum);
//}
//
//int main()
//{
// read();
// sumCheckColumn();
// sumCheckLine();
// sum();
// return 0;
//}