Pagini recente » Cod sursa (job #1648656) | Cod sursa (job #1723104) | Profil StarGold2 | Profil StarGold2 | Cod sursa (job #1987914)
#include <iostream>
#include <fstream>
using namespace std;
void citire(long x[17][17], int &n, int &m)
{
ifstream f("flip.in");
f>>n>>m;
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
f>>x[i][j];
}
f.close();
}
long long sum_line(long x[17][17],int m,int l)
{
int i;
long long s=0;
for(i=1;i<=m;i++)
s+=x[l][i];
return s;
}
long long sum_col(long x[17][17],int n, int c)
{
int i;
long long s=0;
for(i=1;i<=n;i++)
s+=x[i][c];
return s;
}
void switch_l(long x[17][17],int m, int l)
{
int i;
for(i=1;i<=m;i++)
x[l][i]=-x[l][i];
}
void switch_c(long x[17][17], int n, int c)
{
int i;
for(i=1;i<=n;i++)
x[i][c]=-x[i][c];
}
int main()
{
int m,n,i,j,ok=1;
long x[17][17];
citire(x,n,m);
cout<<n;
long long s=0,l,c;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s+=x[i][j];
while(ok)
{
ok=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
l=sum_line(x,m,i);
c=sum_col(x,n,j);
if(s<s-2*l)
{
s=s-2*l;
switch_l(x,m,i);
c-=2*x[i][j];
ok=1;
if(s<s-2*c)
{
s=s-2*c;
switch_c(x,n,j);
}
}
if(s<s-2*c)
{
s=s-2*c;
switch_c(x,n,j);
ok=1;
l-=2*x[i][j];
if(s<s-2*l)
{
s=s-2*l;
switch_l(x,m,i);
}
}
}
}
ofstream g("flip.out");
g<<s;
g.close();
}