Pagini recente » Monitorul de evaluare | Cod sursa (job #1307753) | Istoria paginii runda/dutzlangos/clasament | Cod sursa (job #1888601) | Cod sursa (job #2156508)
#include <fstream>
using namespace std;
int n, m, i, l, c, a[20][20], j, s;
ifstream f("flip.in");
ofstream g("flip.out");
int cmin()
{
int i, p=1;
for(i=2;i<=n;++i) if(a[0][i]<a[0][p]) p=i;
return p;
}
int lmin()
{
int i, p=1;
for(i=2;i<=m;++i) if(a[i][0]<a[p][0]) p=i;
return p;
}
void cflip(int p)
{
int i;
for(i=1;i<=n;++i) a[i][p]=-a[i][p], a[0][p]+=(2*a[i][p]), a[i][0]+=(2*a[i][p]);
}
void lflip(int p)
{
int i;
for(i=1;i<=m;++i) a[p][i]=-a[p][i], a[p][0]+=(2*a[p][i]), a[0][i]+=(2*a[p][i]);
}
int main()
{
f>>n>>m;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j){ f>>a[i][j];
a[i][0]+=a[i][j];
a[0][j]+=a[i][j];
}
int ok=1;
while(ok)
{
l=lmin();
c=cmin();
if(a[l][0]<a[0][c])
if(a[l][0]<0) lflip(l);
else ok=0;
else
if(a[0][c]<0) cflip(c);
else ok=0;
}
for(i=1;i<=n;++i) s+=a[i][0];
g<<s<<"\n";
}