Pagini recente » Cod sursa (job #1208981) | Cod sursa (job #866861) | Cod sursa (job #2024132) | Cod sursa (job #1864508) | Cod sursa (job #41252)
Cod sursa(job #41252)
#include <stdio.h>
FILE *fin,*fout;
long int a[16][16],n,k[16][16],m,t[16][16];
int citire()
{int i,j;
fin=fopen("flip.in","r");
fscanf(fin,"%d%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++) fscanf(fin,"%d",&a[i][j]);
fclose(fin);
return 0;
}
int suma(long int x[16][16])
{ int i,j;
long int suma=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++) suma+=x[i][j];
return suma;
}
int copiere(int opt)
{int i,j;
if(opt==1)
{for(i=0;i<n;i++)
for(j=0;j<m;j++)
k[i][j]=a[i][j];
}
if(opt==2)
{for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=k[i][j];
}
if(opt==3)
{for(i=0;i<n;i++)
for(j=0;j<m;j++)
t[i][j]=k[i][j];
}
if(opt==4)
{for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=t[i][j];
}
if(opt==5)
{for(i=0;i<n;i++)
for(j=0;j<m;j++)
k[i][j]=t[i][j];
}
if(opt==6)
{for(i=0;i<n;i++)
for(j=0;j<m;j++)
t[i][j]=a[i][j];
}
}
int comutator()
{int i,j,mod=1, c,d,no;
copiere(1);
while(mod)
{ mod=0;
for(i=0;i<n;i++)
{no=0;
for(j=0;j<m;j++)
{k[i][j]=k[i][j]*-1;}
copiere(6);
for(c=0;c<m;c++)
{
for(d=0;d<n;d++)
{t[d][c]*=-1;}
if(suma(t)>=suma(k)) no=1;
copiere(6);
}
if(suma(k)>=suma(a)&&!no){ copiere(2);mod=1;}
else copiere(1);
}
for(i=0;i<m;i++)
{no=0;
for(j=0;j<n;j++)
{k[j][i]=k[j][i]*-1;}
copiere(6);
for(c=0;c<n;c++)
{
for(d=0;d<m;d++)
{t[c][d]*=-1;}
if(suma(t)>=suma(k)) no=1;
copiere(6);
}
if(suma(k)>=suma(a)&&!no){ copiere(2);mod=1;}
else copiere(1);
}
}
return 0;
}
int scriere()
{
fout=fopen("flip.out","w");
fprintf(fout,"%d",suma(a));
fclose(fout);
return 0;
}
int main()
{citire();
comutator();
scriere();
return 0;
}