Pagini recente » Cod sursa (job #2686751) | Cod sursa (job #1165984) | Cod sursa (job #3162643) | Cod sursa (job #2204619) | Cod sursa (job #2221672)
#include <bits/stdc++.h>
using namespace std;
int matrix[20][20],n,m,ans;
int line[20],column[20];
bitset<20>apLine,apColumn;
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&matrix[i][j]);
line[i]+=matrix[i][j];
column[j]+=matrix[i][j];
}
bool ok=true;
while(ok)
{
ok=false;
for(int i=1;i<=n;i++)
{
if(apLine[i])
continue;
if(line[i]>=0)
continue;
apLine[i]=1;
line[i]=abs(line[i]);
for(int j=1;j<=m;j++)
{
column[j]-=2*matrix[i][j];
matrix[i][j]=-matrix[i][j];
}
ok=true;
}
for(int i=1;i<=m;i++)
{
if(apColumn[i])
continue;
if(column[i]>=0)
continue;
apColumn[i]=1;
column[i]=abs(column[i]);
for(int j=1;j<=n;j++)
{
line[j]-=2*matrix[j][i];
matrix[j][i]=-matrix[j][i];
}
ok=true;
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
ans+=matrix[i][j];
cout<<ans;
return 0;
}