Pagini recente » Cod sursa (job #583187) | Cod sursa (job #1007236) | Cod sursa (job #2861066) | Cod sursa (job #2598374) | Cod sursa (job #308778)
Cod sursa(job #308778)
#include <fstream.h>
#include <math.h>
#define Nmax 16
long long int n, m, Smax, M[Nmax][Nmax];
void citire();
void determinare();
void afisare();
int main()
{
citire();
determinare();
afisare();
return 0;
}
void citire()
{
ifstream fin("flip.in");
int i, j;
fin>>n>>m;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
fin>>M[i][j];
fin.close();
}
void determinare()
{
int i, j, k, ok=0;
long long int S, Smin, Splus;
while (!ok)
{
ok=1;
for (i=0; i<n; i++)
{
Smin=0; Splus=0;
for (j=0; j<m; j++)
{
if (M[i][j]<0)
Smin+=abs(M[i][j]);
else
Splus+=M[i][j];
}
if (Smin>Splus)
{
for (j=0; j<m; j++)
if (M[i][j]<0)
M[i][j]+=2*abs(M[i][j]);
else
M[i][j]-=2*M[i][j];
ok=0; S=0;
for (k=0; k<n; k++)
for (j=0; j<m; j++)
S+=M[k][j];
if (S>Smax)
Smax=S;
}
}
for (i=0; i<m; i++)
{
Smin=0; Splus=0;
for (j=0; j<n; j++)
{
if (M[j][i]<0)
Smin+=abs(M[j][i]);
else
Splus+=M[j][i];
}
if (Smin>Splus)
{
for (j=0; j<n; j++)
if (M[j][i]<0)
M[j][i]+=2*abs(M[j][i]);
else
M[j][i]-=2*M[j][i];
ok=0; S=0;
for (k=0; k<n; k++)
for (j=0; j<m; j++)
S+=M[k][j];
if (S>Smax)
Smax=S;
}
}
}
}
void afisare()
{
ofstream fout("flip.out");
fout<<Smax<<'\n';
fout.close();
}