Pagini recente » Cod sursa (job #2674274) | Cod sursa (job #2160130) | Cod sursa (job #2403598) | Cod sursa (job #1152121) | Cod sursa (job #24008)
Cod sursa(job #24008)
#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] || aux[i]<0) micul=i;
return micul;
}
int main()
{
int i,j,suma=0;
int gata=0,pozitie1,pozitie2;
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];
}
gata=1;
while(gata==1)
{
gata=0;
pozitie1=min(c,m);
pozitie2=min(l,n);
if(c[pozitie1]<l[pozitie2] && c[pozitie1]<0)
{
suma=suma-c[pozitie1]+(-1)*c[pozitie1];
c[pozitie1]=(-1)*c[pozitie1];
for(i=0;i<n;i++)
{
l[i]=l[i]-mat[i][pozitie1]+(-1)*mat[i][pozitie1];
mat[i][pozitie1]=(-1)*mat[i][pozitie1];
}
gata=1;
}
else if(c[pozitie1]>l[pozitie2] && l[pozitie2]<0)
{
suma=suma-l[pozitie2]+(-1)*l[pozitie2];
l[pozitie2]=(-1)*l[pozitie2];
for(i=0;i<m;i++)
{
c[i]=c[i]-mat[pozitie2][i]+(-1)*mat[pozitie2][i];
mat[pozitie2][i]=(-1)*mat[pozitie2][i];
}
gata=1;
}
}
fprintf(out,"%d",suma);
fclose(in);
fclose(out);
}
return 0;
}