Pagini recente » Cod sursa (job #707774) | Cod sursa (job #1747502) | Cod sursa (job #212039) | Cod sursa (job #1941234) | Cod sursa (job #293310)
Cod sursa(job #293310)
#include <fstream>
using namespace std;
fstream f,g;
int i,j,m,n;
int flip[17][17];
long vect[4];
long sum;
void change(int i,int j)
{
int x;
for(x=0;x<4;x++)
vect[x]=0;
// 0 0
for(x=1;x<=n;x++)
if(x!=j)
vect[0]+=flip[i][x];
for(x=1;x<=m;x++)
vect[0]+=flip[x][j];
// 0 1
for(x=1;x<=n;x++)
if(x!=j)
vect[1]+=flip[i][x];
for(x=1;x<=m;x++)
vect[1]+=-flip[x][j];
// 1 0
for(x=1;x<=n;x++)
vect[2]+=-flip[i][x];
for(x=1;x<=m;x++)
if(x!=i)
vect[2]+=flip[x][j];
// 1 1
for(x=1;x<=n;x++)
if(x!=j)
vect[3]+=-flip[i][x];
for(x=1;x<=m;x++)
if(x!=i)
vect[3]+=-flip[x][j];
vect[3]+=flip[i][j];
long max=-16000000;
int pos;
for(x=0;x<4;x++)
if(vect[x]>max)
{
max=vect[x];
pos=x;
}
switch(pos)
{
case 1:
for(x=1;x<=m;x++)
flip[x][j]=-flip[x][j];
break;
case 2:
for(x=1;x<=n;x++)
flip[i][x] = -flip[i][x];
break;
case 3:
for(x=1;x<=n;x++)
flip[i][x]=-flip[i][x];
for(x=1;x<=m;x++)
flip[x][j] = -flip[x][j];
}
}
int main()
{
f.open("flip.in",fstream::in);
g.open("flip.out",fstream::out);
f >> m >> n;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f >> flip[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
change(i,j);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
sum+=flip[i][j];
g << sum << "\n";
f.close();
g.close();
return 0;
}