Pagini recente » Cod sursa (job #603354) | Cod sursa (job #3176512) | Cod sursa (job #33489) | Cod sursa (job #941525) | Cod sursa (job #1134442)
#include<iostream>
#include<fstream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<cstring>
#include<cstdlib>
using namespace std;
struct an
{
int tip,indice;
};
ifstream fin("flip.in");
ofstream fout("flip.out");
int n,m,a[17][17];
inline void Citire()
{
int i,j;
fin>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
fin>>a[i][j];
}
inline an Analizeaza()
{
int i,j,venituri,chieltuieli,linia,coloana,test,maxim;
maxim=test=linia=coloana=0;
an w;
w.tip=0;w.indice=0;
for (i=1;i<=n;i++)
{
venituri=chieltuieli=0;
for (j=1;j<=m;j++)
if (a[i][j]>=0)
chieltuieli+=a[i][j];
else venituri+=a[i][j];
venituri=abs(venituri);
if (venituri>chieltuieli)
if (venituri-chieltuieli>maxim)
{
maxim=venituri-chieltuieli;
test=1;
linia=i;
}
}
for (j=1;j<=m;j++)
{
venituri=chieltuieli=0;
for (i=1;i<=n;i++)
if (a[i][j]>=0)
chieltuieli+=a[i][j];
else venituri+=a[i][j];
venituri=abs(venituri);
if (venituri>chieltuieli)
if (venituri-chieltuieli>maxim)
{
maxim=venituri-chieltuieli;
test=2;
coloana=j;
}
}
if (test==1)
{
w.tip=1;
w.indice=linia;
}
else if (test==2)
{
w.tip=2;
w.indice=coloana;
}
return w;
}
inline void Rezolva()
{
int i,nr=0;
an w;
w=Analizeaza();
while (w.tip!=0)
{
if (w.tip==1)
for (i=1;i<=m;i++)
a[w.indice][i]=-a[w.indice][i];
else if (w.tip==2)
for (i=1;i<=n;i++)
a[i][w.indice]=-a[i][w.indice];
w=Analizeaza();
nr++;
}
}
inline void Afisare()
{
int i,j,suma=0;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
suma+=a[i][j];
fout<<suma<<"\n";
}
int main()
{
Citire();
Rezolva();
Afisare();
return 0;
}