Pagini recente » Cod sursa (job #2793253) | Cod sursa (job #2134362) | Cod sursa (job #2776334) | Cod sursa (job #1924838) | Cod sursa (job #75555)
Cod sursa(job #75555)
#include <stdio.h>
int s_max,s,i,j,k,a[20][20],max,p,v[1000000],m,n,q,l,h;
int main()
{FILE *fin,*fout;
fin=fopen("flip.in","r");
fscanf(fin,"%d %d",&n,&m);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
fscanf(fin,"%d",&a[i][j]);
fclose(fin);
s_max=0;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
s_max+=a[i][j];
max=1;p=1;v[1]=1;
s=0;
for (j=1;j<=n;j++)
{a[i][m]=-a[i][m];
s+=a[i][m];
}
if (s>s_max) s_max=s;
for (i=2;i<=n+m;i++)
{max++;
p++;
v[p]=max;
if ((n+m-v[p]+1)>n) {s=0;
for (j=1;j<=n;j++)
a[j][m-v[p]+1]=-a[j][m-v[p]+1];
for (l=1;l<=n;l++)
for (h=1;h<=m;h++)
s=s+a[l][h];
if (s>s_max) s_max=s;
}
else {s=0;
for (j=1;j<=m;j++)
a[n+m-v[p]+1][j]=-a[n+m-v[p]+1][j];
for (l=1;l<=n;l++)
for (h=1;h<=m;h++)
s=s+a[l][h];
if (s>s_max) s_max=s;
}
q=p-1;
for (j=1;j<=q;j++)
{p++;
v[p]=v[j];
if ((n+m-v[j]+1)>n) {s=0;
for (k=1;k<=n;k++)
a[k][m-v[j]+1]=-a[k][m-v[j]+1];
for (l=1;l<=n;l++)
for (h=1;h<=m;h++)
s=s+a[l][h];
if (s>s_max) s_max=s;
}
else {s=0;
for (k=1;k<=m;k++)
a[n+m-v[j]+1][k]=-a[n+m-v[j]+1][k];
for (l=1;l<=n;l++)
for (h=1;h<=m;h++)
s=s+a[l][h];
if (s>s_max) s_max=s;
}
}
}
fout=fopen("flip.out","w");
fprintf(fout,"%d",s_max);
fclose(fout);
return 0;
}