Pagini recente » Cod sursa (job #1325264) | Cod sursa (job #1214622) | Cod sursa (job #686308) | Cod sursa (job #3219829) | Cod sursa (job #934580)
Cod sursa(job #934580)
#include <iostream>
#include <fstream>
#include <stdlib.h>
std::ifstream fin("flip.in");
std::ofstream fout("flip.out");
//std::ifstream fin("date.in");
//std::ofstream fout("date.out");
long cmmdc(long a, long b)
{
if(!b)
{
return a;
}
else
{
return cmmdc(b, a%b);
}
}
void citeste()
{
int n = 0, m = 0;
fin>>n>>m;
long a[16][16], sumeR[16], sumeC[16];
for(int i = 0 ; i < n ; i++)
{
for(int j = 0 ; j < m ; j++)
{
fin>>a[i][j];
if(!i)
{
sumeC[j] = a[i][j];
}
else
{
sumeC[j] += a[i][j];
}
if(!j)
{
sumeR[i] = a[i][j];
}
else
{
sumeR[i] += a[i][j];
}
}
}
long sumTot = 0, maxim = 0;
bool noNegL = false, noNegC = false;
for(int i = 0 ; i < n ; i++)
{
for(int j = 0 ; j < m ; j++)
{
sumTot += a[i][j];
}
}
maxim = sumTot;
while(!noNegL || !noNegC)
{
sumTot = 0;
noNegL = true, noNegC = true;
for(int i = 0; i < n; i++)
{
if(sumeR[i] < 0)
{
for(int k = 0 ; k < m ; k++)
{
a[i][k] *= (-1);
sumeC[k] += a[i][k] * 2;
if(sumeC[k] < 0)
{
noNegC = false;
}
}
}
}
for(int i = 0; i < m; i++)
{
if(sumeC[i] < 0)
{
for(int k = 0 ; k < n ; k++)
{
a[k][i] *= (-1);
sumeR[k] += a[k][i] * 2;
if(sumeR[k] < 0)
{
noNegL = false;
}
}
}
}
for(int i = 0 ; i < n ; i++)
{
for(int j = 0 ; j < m ; j++)
{
sumTot += a[i][j];
}
}
if(sumTot < maxim)
{
break;
}
else
{
maxim = sumTot;
}
}
// for(int i = 0 ; i < n ; i++)
// {
// for(int j = 0 ; j < m ; j++)
// {
// sumTot += a[i][j];
// }
// }
fout<<sumTot;
}
int main()
{
citeste();
return 0;
}