Pagini recente » Cod sursa (job #1548261) | Cod sursa (job #2112924) | Cod sursa (job #1179627) | Cod sursa (job #181819) | Cod sursa (job #1888468)
#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++)
a[i][j]=-a[i][j];
}
void flipcoloana(int j)
{
for(int i=1; i<=n; i++)
a[i][j]=-a[i][j];
}
int main()
{
citire(n,m,a);
int ok1=1, ok2=1;
while(ok1!=0 && ok2!=0)
{
for(int i=1; i<=n; i++)
{
if(max(liniep[i],linien[i])==linien[i])
{
ok1=1;
int aux;
aux=liniep[i];
liniep[i]=linien[i];
linien[i]=aux;
fliplinie(i);
}
else
if(i==n)
ok1=0;
}
for(int j=1; j<=m; j++)
{
if(max(coloanap[j],coloanan[j])==coloanan[j])
{
ok2=1;
int aux;
aux=coloanap[j];
coloanap[j]=coloanan[j];
coloanan[j]=aux;
flipcoloana(j);
}
else
if(j==m)
ok2=0;
}
}
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
suma+=a[i][j];
iesire<<suma;
return 0;
}