Pagini recente » Cod sursa (job #1629286) | Cod sursa (job #301961) | Cod sursa (job #3285573) | Cod sursa (job #2458919) | Cod sursa (job #556093)
Cod sursa(job #556093)
#include <cstdio>
using namespace std;
int n,m,a[17][17],b[17][17],slb[17],scb[17],slb2[17],smax,scb2[17],sc[17],sc2[17],sl[17],sl2[17],i,j,s,p;
void Citeste()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
sl[i]=0;
sc[i]=0;
for(j=1;j<=m;j++)
{
scanf("%d",&a[i][j]);
b[i][j]=a[i][j];
sl[i]=slb[i]=sl[i]+a[i][j];
sc[j]=scb[i]=sc[j]+a[i][j];
}
}
}
void schimba(int i,int p)
{
if(p==1)
{
for(j=1;j<=n;j++)
{
a[i][j]=a[i][j]*-1;
sl2[i]=sl2[i]+a[i][j];
}
if(sl[i]<=sl2[i])
sl[i]=sl2[i];
}
else if(p==2)
{
for(j=1;j<=n;j++)
{
a[j][i]=a[j][i]*-1;
sc2[i]=sc2[i]+a[j][i];
}
if(sc[i]<=sc2[i])
{
sc[i]=sc2[i];
}
}
}
void schimbab(int i,int p)
{
if(p==1)
{
for(j=1;j<=n;j++)
{
b[i][j]=b[i][j]*-1;
slb2[i]=slb2[i]+b[i][j];
}
if(slb[i]<=slb2[i])
slb[i]=slb2[i];
}
else if(p==2)
{
for(j=1;j<=n;j++)
{
b[j][i]=b[j][i]*-1;
scb2[i]=scb2[i]+b[j][i];
}
if(scb[i]<=scb2[i])
{
scb[i]=scb2[i];
}
}
}
void Scrie()
{
printf("%d",smax);
}
int main()
{
Citeste();
for(i=1;i<=n;i++)
{
schimba(i,1);
if(sl[i]>sl2[i])
schimba(i,1);
for(j=1;j<=n;j++)
{
sc[j]=sc[j]-a[i][j]+a[i][j];
}
}
for(i=1;i<=m;i++)
{
schimba(i,2);
if(sc[i]>sc2[i])
schimba(i,2);
for(j=1;j<=n;j++)
{
sl[j]=sl[j]-a[i][j]+a[i][j];
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s=s+a[i][j];
if(s>smax)
{
smax=s;
}
for(i=1;i<=m;i++)
{
schimbab(i,2);
if(scb[i]>scb2[i])
schimbab(i,2);
for(j=1;j<=n;j++)
{
slb[j]=slb[j]-b[i][j]+b[i][j];
}
}
for(i=1;i<=n;i++)
{
schimbab(i,1);
if(slb[i]>slb2[i])
schimbab(i,1);
for(j=1;j<=n;j++)
{
scb[j]=scb[j]-b[i][j]+b[i][j];
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s=s+b[i][j];
if(s>smax)
smax=s;
Scrie();
return 0;
}