Pagini recente » Cod sursa (job #1934671) | Cod sursa (job #1068779) | Cod sursa (job #2871680) | Cod sursa (job #226797) | Cod sursa (job #525244)
Cod sursa(job #525244)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m,i,j,k=1,r,s,z,v,x,y;
long a[17][17], b[17], c[17];
void diferenta_l (long a[17][17])
{long s;
for (i=1;i<=n;i++)
{
s=0;
for (j=1;j<=m;j++)
s=s-a[i][j];
b[i]=s;
}
}
void diferenta_c (long a[17][17])
{
long s;
for (j=1;j<=m;j++)
{
s=0;
for (i=1;i<=n;i++)
s=s-a[i][j];
c[j]=s;
}
}
int max (long a[17], int d)
{
long max;
max=a[1];
for (i=1;i<=d;i++)
if (max<a[i])
{
max=a[i]; r=i;
}
return max;
}
void inmultire_l (long a[17][17], int l)
{
for (j=1;j<=m;j++)
a[l][j]=-a[l][j];
}
void inmultire_c(long a[17][17], int c)
{
for (i=1;i<=n;i++)
a[i][c]=-a[i][c];
}
int main()
{
f>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
f>>a[i][j];
diferenta_l(a);
diferenta_c(a);
while (k)
{
k=0;
x=max(b,n);
z=r;
y=max(c,m);
v=r;
if (max(b,n)>max(c,m))
{
if (max(b,n)>0)
{
inmultire_l(a,z);
c[z]=-c[z];
k=1;
}
}
else
{
if (max(c,m)>0)
{
inmultire_c(a,v);
b[v]=-b[v];
k=1;
}
}
}
s=0;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
s=s+a[i][j];
g<<s;
f.close();
g.close();
return 0;
}