Pagini recente » Cod sursa (job #1566980) | Cod sursa (job #1825512) | Cod sursa (job #1576906) | Cod sursa (job #1245469) | Cod sursa (job #249520)
Cod sursa(job #249520)
# include <fstream>
using namespace std;
int n, m, a[100][100], b[100][100];
ofstream fout ("flip.out");
void verlin (long long [][100]);
void vercol (long long [][100]);
void init (int);
void comutac (int);
void comutal (int);
long long ver1 (int x[100][100], long long l[2][100], long long c[2][100]);
long long ver2 (int x[100][100], long long c[2][100], long long l[2][100]);
void citire ()
{
ifstream fin ("flip.in");
int i, j;
fin>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
fin>>a[i][j];
b[i][j]=a[i][j];
}
fin.close ();
}
int main ()
{
long long c[2][100], l[2][100];
long long rez1, rez2;
int i, j;
citire ();
rez1=ver1(a, l, c);
rez2=ver2(b, c, l);
if (rez1>rez2)
fout<<rez1;
else
fout<<rez2;
fout.close ();
return 0;
}
long long ver1 (int x[100][100], long long l[2][100], long long c[2][100])
{
long long s=0;
int i, j;
verlin(l);
vercol(c);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
s+=x[i][j];
return s;
}
long long ver2 (int x[100][100], long long c[2][100], long long l[2][100])
{
long long s=0;
int i, j;
vercol(c);
verlin(l);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
s+=a[i][j];
return s;
}
void init (long long b[][100], int ce)
{
int i, j;
if (ce==1)
{
for (i=1;i<=2;i++)
for (j=1;j<=n;j++)
b[i][j]=b[i][j]*0;
}
else
if (ce==2)
{
for (i=1;i<=2;i++)
for (j=1;j<=m;j++)
b[i][j]=b[i][j]*0;
}
}
void verlin (long long l[][100])
{
int i, j, pp=0;
while (!pp)
{
pp=1;
init(l, 1);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]<0)
l[2][i]+=a[i][j];
else
l[1][i]+=a[i][j];
for (i=1;i<=n;i++)
if (l[2][i]+l[1][i]<0)
pp=0, comutal(i);
}
}
void vercol (long long c[][100])
{
int i, j, pp=0;
while (!pp)
{
pp=1;
init (c, 2);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]<0)
c[2][j]+=a[i][j];
else
c[1][j]+=a[i][j];
for (j=1;j<=m;j++)
if (c[2][j]+c[1][j]<0)
pp=0, comutac (j);
}
}
void comutal (int i)
{
int j;
for (j=1;j<=m;j++)
a[i][j]=-1*a[i][j];
}
void comutac (int j)
{
int i;
for (i=1;i<=n;i++)
a[i][j]=-1*a[i][j];
}