Pagini recente » Cod sursa (job #1896530) | Cod sursa (job #2248958) | Cod sursa (job #2784494) | Cod sursa (job #1375713) | Cod sursa (job #21777)
Cod sursa(job #21777)
#include <stdio.h>
FILE *in,*out;
int min(int aux[17],int max)
{
int micul=0,i;
for(i=1;i<max;i++)
if(aux[micul]>aux[i]) micul=i;
return micul;
}
int main()
{
int i,j,suma=0;
int gata=0,pozitie;
int n,m,mat[17][17],c[17],l[17];
in=fopen("flip.in","r");
out=fopen("flip.out","w");
fscanf(in, "%d %d", &n,&m);
for(i=0;i<17;i++)
{c[i]=0;
l[i]=0;}
if(n==1 && m==1)
{
fscanf(in, "%d", &n);
if(n<0) fprintf(out,"%d",(-1)*n);
else fprintf(out,"%d",n);
fclose(in);
fclose(out);
}
else
{
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
fscanf(in,"%d",&mat[i][j]);
l[i]+=mat[i][j];
c[j]+=mat[i][j];
suma+=mat[i][j];
}
///// PENNTRU COLOANE
while(gata==0)
{
gata=1;
pozitie=min(c,m);
if(suma<suma-c[pozitie]+(-1)*c[pozitie])
{
suma=suma-c[pozitie]+(-1)*c[pozitie];
c[pozitie]=(-1)*c[pozitie];
for(i=0;i<n;i++)
{
l[i]=l[i]-mat[i][pozitie]+(-1)*mat[i][pozitie];
mat[i][pozitie]=(-1)*mat[i][pozitie];
}
gata=0;
}
}
/////PENTRU LINII
gata=0;
while(gata==0)
{
gata=1;
pozitie=min(l,n);
if(suma<suma-l[pozitie]+(-1)*l[pozitie])
{
suma=suma-l[pozitie]+(-1)*l[pozitie];
l[pozitie]=(-1)*l[pozitie];
for(i=0;i<m;i++)
{
c[i]=c[i]-mat[pozitie][i]+(-1)*mat[pozitie][i];
mat[pozitie][i]=(-1)*mat[pozitie][i];
}
gata=0;
}
}
fprintf(out,"%d",suma);
fclose(in);
fclose(out);
}
return 0;
}