Pagini recente » Cod sursa (job #1906076) | Cod sursa (job #1448591) | Cod sursa (job #2460871) | Cod sursa (job #2339727) | Cod sursa (job #1784538)
#include <iostream>
#include <fstream>
using namespace std;
ifstream intrare("flip.in");
ofstream iesire("flip.out");
int n, m, a[18][18], liniep[17], coloanap[17], linien[17], coloanan[17], suma;
void citire(int &n, int &m, int a[18][18])
{
intrare>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
intrare>>a[i][j];
if(a[i][j]>=0)
{
liniep[i]+=a[i][j];
coloanap[j]+=a[i][j];
}
else
{
linien[i]-=a[i][j];
coloanan[j]-=a[i][j];
}
}
}
void fliplinie(int i)
{
for(int j=1; j<=m; j++)
{
if(a[i][j]>0)
{
coloanap[j]-=a[i][j];
coloanan[j]+=a[i][j];
}
else
{
coloanan[j]+=a[i][j];
coloanap[j]-=a[i][j];
}
a[i][j]=-a[i][j];
}
}
void flipcoloana(int j)
{
for(int i=1; i<=n; i++)
{
if(a[i][j]>0)
{
liniep[i]-=a[i][j];
linien[i]+=a[i][j];
}
else
{
linien[i]-=a[i][j];
liniep[i]+=a[i][j];
}
a[i][j]=-a[i][j];
}
}
int main()
{
citire(n,m,a);
for(int i=1; i<=n; i++)
{
if(max(liniep[i],linien[i])==linien[i])
{
int aux;
aux=liniep[i];
liniep[i]=linien[i];
linien[i]=aux;
fliplinie(i);
}
}
for(int j=1; j<=m; j++)
{
if(max(coloanap[j],coloanan[j])==coloanan[j])
{
int aux;
aux=coloanap[j];
coloanap[j]=coloanan[j];
coloanan[j]=aux;
flipcoloana(j);
}
}
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
suma+=a[i][j];
iesire<<suma;
return 0;
}