Pagini recente » Diferente pentru olimpici intre reviziile 180 si 28 | Istoria paginii runda/simulare_oni/clasament | Istoria paginii runda/joaca_4/clasament | Autentificare | Cod sursa (job #164087)
Cod sursa(job #164087)
#include<stdio.h>
int n, m, l[17], c[17], v[33];
unsigned long a[17][17];
void citire();
int suma();
void citire()
{
int i, j;
FILE *fin=fopen("flip.in", "rt");
fscanf(fin, "%d %d", &n, &m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fscanf(fin, "%d", &a[i][j]);
}
int suma()
{
int i, j, s=0;
for(i=1;i<=n;i++)
{
l[i]=0;
for(j=1;j<=m;j++)
l[i]=l[i]+a[i][j];
}
for(i=1;i<=m;i++)
{
c[i]=0;
for(j=1;j<=n;j++)
c[i]=c[i]+a[j][i];
}
for(i=1;i<=n;i++)
s=s+l[i];
return s;
}
int main()
{
FILE *fout=fopen("flip.out", "w");
int p=1, s, max=0, ss, i;
citire();
ss=suma();
while(p)
{
p=0;
for(i=n+m;i>=1;i--)
if(v[i]==0)
{
v[i]=1;
p=i;
break;
}
for(i=p+1;i<=n+m;i++)
v[i]=0;
s=ss;
for(i=1;i<=n;i++)
if(v[i]==1)
s=s-2*l[i];
for(i=n+1;i<=n+m;i++)
if(v[i]==1)
s=s-2*c[i-n];
if(s>max)
max=s;
}
fprintf(fout, "%d", max);
return 0;
}