Pagini recente » Cod sursa (job #1223564) | Cod sursa (job #3040232) | Cod sursa (job #1682485) | Cod sursa (job #1160028) | Cod sursa (job #1727614)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m,a[17][17],l[17],c[17],s,si,ver,i,j,verl,verr,verc,poz,mini,sf=0;
void sumal()
{
for(i=1;i<=m;i++)
{
s=0;
for(j=1;j<=n;j++)
s=s+a[i][j];
l[i]=s;
}
}
void sumac()
{
for(j=1;j<=m;j++)
{
s=0;
for(i=1;i<=n;i++)
s=s+a[i][j];
c[j]=s;
}
}
int main()
{
f>>n>>m;
si=0;
for(i=1;i<=n;i++)
{
s=0;
for(j=1;j<=m;j++)
{f>>a[i][j];
s=s+a[i][j];}
l[i]=s;}
for(i=1;i<=n;i++)
si=si+l[i];
ver=1;
for(j=1;j<=m;j++)
{
s=0;
for(i=1;i<=n;i++)
s=s+a[i][j];
c[j]=s;
}
while(ver==1)
{
verl=1;
verc=1;
mini=l[1];
for(i=2;i<=n;i++)
if(mini>l[i])
{mini=l[i];
poz=i;}
if(mini<=0)
verl=0;
if(verl==0)
{
for(i=1;i<=n;i++)
if(mini==l[i]&&poz!=i)
{
l[i]=l[i]*(-1);
for(j=1;j<=m;j++)
a[i][j]=a[i][j]*(-1);
}
l[poz]=l[poz]*(-1);
for(j=1;j<=m;j++)
a[poz][j]=a[poz][j]*(-1);
sumac();
for(j=1;j<=m;j++)
mini=c[1];
poz=1;
for(j=2;j<=m;j++)
if(mini>c[j])
{
mini=c[j];
poz=j;
}
if(mini<=0)
verc=0;
if(verc==0)
{
for(j=1;j<=m;j++)
if(mini==c[j]&&poz!=j)
{
c[j]=c[j]*(-1);
for(i=1;i<=n;i++)
a[i][j]=a[i][j]*(-1);
}
c[poz]=c[poz]*(-1);
for(i=1;i<=n;i++)
a[i][poz]=a[i][poz]*(-1);
sumal();
}
}
else
{
mini=c[1];
poz=1;
for(j=2;j<=m;j++)
if(mini>c[j])
{
mini=c[j];
poz=j;
}
if(mini<=0)
verc=0;
if(verc==0)
{
for(j=1;j<=m;j++)
if(mini==c[j]&&poz!=j)
{
c[j]=c[j]*(-1);
for(i=1;i<=n;i++)
a[i][j]=a[i][j]*(-1);
}
c[poz]=c[poz]*(-1);
for(i=1;i<=n;i++)
a[i][poz]=a[i][poz]*(-1);
sumal();
}
}
if(verc==1&&verl==1)
ver=0;
if(ver==0)
{
sumac();
s=0;
for(j=1;j<=m;j++)
s=s+c[j];
}
}
g<<s;
f.close();
g.close();
return 0;
}